如同apt-get安装程序时会有-y参数来避免交互输入一样,我也希望在ssh登录时能够直接附加登录密码以避免交互式输入密码这一步,网上找了找,方法很多。
比如直接通过密钥免密码登录,不过需要改动很多,感觉很麻烦。这里更想要的是不改动server/client的配置下直接免交互式ssh登录。
于是我先查看帮助:
这里没有可用参数能够附加登录密码,于是继续找办法。
sshpass
sshpass: 用于非交互的ssh 密码验证
ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取。
办法找到了,现在先在自己机器上安装。
对于debian/ubuntu系统来说,安装方式很简单:
sudo apt-get install sshpass
对于其他系统来说,可以通过编译源码:
1 wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz 2 tar xvzf sshpass-1.05.tar.gz 3 ./configure 4 make 5 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] root@192.168.X.X
来登录远程主机了。