`
tinyhema
  • 浏览: 152721 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mac下使用sshpass实现ssh记住密码

 
阅读更多
由于有一些场景不能使用ssh私钥来实现免登,因此需要想其它办法解决一下这个问题。


安装sshpass

试图使用homebrew安装
$ brew install sshpass
Error: No available formula for sshpass
We won't add sshpass because it makes it too easy for novice SSH users to
ruin SSH's security.

这个萌卖的好。。。。

使用homebrew强制安装
brew install https://raw.github.com/eugeneoden/homebrew/eca9de1/Library/Formula/sshpass.rb

成功了。。。

编译安装
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz
tar xvzf sshpass-1.05.tar.gz
./configure --prefix=/usr/local/Cellar/sshpass/1.05
make
sudo make install

编译安装的步骤是从brew的步骤中copy出来的,绝对可行。其中./configure 后面的prefix路径可以去掉,这样就会安装到默认目录中。

使用方式
sshpass -p 'ssh_password' ssh xxx.xxx.xxx.xxx

可以看到这种方式其实还是要在命令里指定host+密码登录,还是不够方便。期待的方式是只需要指定host即可,密码神马的,能自己处理。

简单的使用方式
写一个脚本,记录一些常用的用户名与密码,通过简单的选择即可完成ssh登录。
创建一个文件sshp。
#!/bin/bash
cat <<MENU
    a   =>  10.101.81.238
    10.101.81.238   =>  10.101.81.238
    b   =>  192.168.4.151
    192.168.4.151   =>  192.168.4.151
    c   =>  192.168.4.2
    192.168.4.2     =>  192.168.4.2

>>> 请输入ip或序号 <<<
MENU
    echo -n "Your choose:"
    read host
    case "$host" in
        a|10.101.81.238)
            exec /usr/local/bin/sshpass -p 123456  ssh root@10.101.81.238 -p22
            ;;
        b|192.168.4.151)
            exec /usr/local/bin/sshpass -p 'sdfsdf'  ssh root@192.168.4.151 -p22
            ;;
        c|192.168.4.2)
            exec /usr/local/bin/sshpass -p 'wfssfs'  ssh root@192.168.4.2 -p22
            ;;
        *)
        echo "Error, No host"
        ;;
    esac


使用方法
$ sshp
    a   =>  10.101.81.238
    10.101.81.238   =>  10.101.81.238
    b   =>  192.168.4.151
    192.168.4.151   =>  192.168.4.151
    c   =>  192.168.4.2
    192.168.4.2     =>  192.168.4.2

>>> 请输入ip或序号 <<<
Your choose:a
# ssh login success


可以看到,相比第一种方法,这种模式要简单很多。

更简单的使用方法,应该是只需要输入 sshp host,就可以完成ssh登录。

更简单的使用方式
使用一个文件存储host、password对,自行根据host匹配密码,并登录。

创建一个脚本,名为sshp,内容如下。
#!/bin/bash

RC_ERR_NO_HOST=11
RC_ERR_NO_PASSWORD=21
RC_SUCCESS=0

pass_path=~/.ssh/sshp_pass

host=$1

# arguments 
if [ -z $host ]; then
    echo "ERR_NO_HOST, please input host."
    exit $RC_ERR_NO_HOST  
fi

# read file
pwd=`grep $host\  $pass_path | cut -d' ' -f 2`
if [ -z $pwd ]; then
    echo "ERR_NO_PASSWORD, please record password first. file path $pass_path"
    exit $RC_ERR_NO_PASSWORD
fi

exec sshpass -p $pwd  ssh root@$host -p22
exit $RC_SUCCESS


使用方法
sshp host


创建一个文件 ~/.ssh/sshp_pass,存放 host 与密码数据,格式为"host password"。
例如
10.101.81.238 123456


除了可以动态指定host以外,还可以实现 用户名、端口的自定义,暂时没有需求,就这样吧。^_^
分享到:
评论

相关推荐

    使用TortoiseGit时如何实现SSH免密码登录

    ### 使用TortoiseGit实现SSH免密码登录的详细步骤 #### 一、背景介绍 在日常的开发工作中,很多团队都会使用版本控制系统如Git来进行代码管理。为了方便开发者之间的协作,通常会选择部署一个版本服务器(如GitLab...

    sshpass用于非交SSH的密码操作

    sshpass用于非交SSH的密码验证,一般用在sh脚本中,无须再次输入密码。 它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。 其默认没有安装,需要手动安装 安装 ...

    sshpass: 用于非交互的 ssh 密码验证

    虽然密钥对认证更安全,但如果你必须在某些情况下使用密码,可以结合 `sshpass` 和密钥对。例如,当远程服务器需要临时密码认证时,可以使用 `sshpass` 提供密码,同时指定使用私钥文件: ```bash sshpass -p 'your...

    使用sshLooterC抓取SSH密码1

    然而,在某些情况下,攻击者可能会尝试捕获 SSH 密码,以便非法访问服务器资源。本文将详细介绍如何使用 sshLooterC 抓取 SSH 密码。 首先,需要安装必要的依赖项,包括 make、gcc、libcurl4-openssl-dev、libpam0g...

    通过pssh和sshpass工具实现一对多的免密登陆+批量操作

    sshpass(yum install sshpass安装):用于ssh登陆时自动输入密码 思路: 服务器A上生成公钥,将公钥分发给所有SUT的test用户,使得所有SUT的test用户可以免密登陆 修改/etc/ssh/sshd_config配置文件,使得可以root...

    批量实现ssh无密码登录

    ### 批量实现SSH无密码登录的详细步骤与原理 #### 背景介绍 在大规模部署或维护服务器集群时,实现服务器间的无密码登录变得至关重要。无密码登录不仅可以简化日常管理和运维工作流程,还能提高自动化部署和脚本...

    使用ssh、scp不需要密码

    "使用ssh、scp不需要密码" ssh 和scp 是 Linux 系统中常用的远程登陆和文件传输工具,但是使用它们需要输入密码,这就带来了不便。为了解决这个问题,文章介绍了一种使用 ssh 和 scp 不需要密码的方法。 密钥对的...

    linux下怎样设置ssh无密码登录.docx

    Linux 下设置 SSH 无密码登录 Linux 是一个流行的开源操作系统, SSH(Secure Shell)是 Linux 中的一种安全协议,允许用户远程登录到 Linux 服务器并执行命令。设置 SSH 无密码登录可以提高 Linux 服务器的安全性...

    postgres用户下ssh无密码登录

    在Postgres用户下实现SSH无密码登录,需要修改SSH配置文件。首先,需要修改/etc/ssh/sshd_config文件,添加以下配置: RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ...

    android 实现 ssh功能

    实现SSH服务时,必须注意安全措施,如限制可接受的连接来源、定期更换密钥、使用强密码等,以防止未授权访问。 9. **调试与测试**: 使用`shell_ssh_gcc`这样的工具,可以在本地模拟Android环境进行SSH服务的测试...

    linux ssh远程服务器自动输入密码 sshpass插件

    SSHpass是一个方便的Linux工具,专为自动化任务设计,它允许通过命令行接口在SSH连接中自动输入密码,无需手动交互。这对于系统管理员执行脚本化任务或批量管理多台服务器时非常有用。 在描述中提到了sshpass的几个...

    QT实现SSH,sftp

    2. 创建连接:使用QSsh::SshConnection类创建一个SSH连接对象,设置服务器地址、端口、用户名和密码,然后调用connectToHost()方法发起连接请求。 3. 确认连接:监听QSsh::SshConnection的stateChanged信号,当状态...

    sshpass跨机器密码校验

    SSHpass允许用户在不使用交互式提示的情况下通过命令行提供SSH密码。这对于自动化流程非常有用,比如在无人值守的脚本中,你可能需要登录到远程服务器执行某些操作。使用SSHpass可以避免每次连接都需要手动输入密码...

    ssh免密码登录

    为了提高工作效率并减少密码输入的繁琐过程,实现SSH免密码登录是一种非常实用的方法。本文将详细介绍如何通过公钥认证机制来实现SSH免密码登录,并基于给定文件中的步骤进行具体说明。 #### 二、基本原理 SSH免...

    Mac下使用SSH连接远程Linux服务器

    本文主要介绍三种方法,在Mac下使用SSH连接远程Linux服务器。 方法一:使用终端 1.打开终端,点击新建远程连接 2.点击加号,然后添加自己服务器的IP地址 3.点击右侧的服务器,然后在下方输入用户名,选择最下方的 ...

    linux系统的ssh免密码登录机制原理及实现范例

    ### Linux系统的SSH免密码登录机制原理及实现范例 #### 一、SSH免密码登录机制原理 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。它可以在不安全的网络上提供一种安全的远程登录方法。对于经常...

    SSH无密码登录配置(主要针对Hadoop配置)

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。在Hadoop这样的分布式计算环境中,SSH无密码登录配置至关重要,...正确配置并妥善管理SSH密钥,可以实现安全的无密码登录。

    Hadoop SSH免密码登录以及失败解决方案

    在提示输入passphrase时,保持为空并按回车,以便实现无密码登录。 2. **生成`authorized_keys`文件** 将公钥添加到`~/.ssh/authorized_keys`文件中,这允许拥有该公钥的用户登录。执行以下命令: ``` cat ~/...

    Linux下限制SSH登陆以及密码策略

    "Linux下限制SSH登陆以及密码策略" 在 Linux 系统中,限制 SSH 登陆和设置密码策略是非常重要的安全措施。下面我们将详细介绍如何限制 SSH 远程 root 登陆和设置密码策略。 一、限制 SSH 远程 root 登陆 在 Linux...

    sshpass自动分发ssh公钥

    sshpass自动分发ssh公钥

Global site tag (gtag.js) - Google Analytics