如同apt-get安装程序时会有-y参数来避免交互输入一样,我也希望在ssh登录时能够直接附加登录密码以避免交互式输入密码这一步,网上找了找,方法很多。

  比如直接通过密钥免密码登录,不过需要改动很多,感觉很麻烦。这里更想要的是不改动server/client的配置下直接免交互式ssh登录。

  于是我先查看帮助:

  

  这里没有可用参数能够附加登录密码,于是继续找办法。


  sshpass

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

  ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取。

  办法找到了,现在先在自己机器上安装。

  对于debian/ubuntu系统来说,安装方式很简单:

sudo apt-get install sshpass

  对于其他系统来说,可以通过编译源码:

wget 
tar xvzf sshpass-1.05.tar.gz  
./configure 
make  
sudo make install

  也可以直接通过访问这个来下载sshpass-1.05.tar.gz文件。

  ./configure 后可以添加参数指定安装目录,比如:

./configure --prefix=/usr/local/Cellar/sshpass/1.05

  来把sshpass安装到自己喜欢的位置,如果没有这个参数,则安装到默认位置。

  安装好了后,输入sshpass来查看是否安装好了:

  


  这样就可以通过:

sshpass -p [passwd] ssh -p [port] [email protected]

  来登录远程主机了。