ssh命令默认不允许以非交互的方式传递密码。sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。
基本语法
sshpass -p 'password' ssh user@hostname command
1、直接远程连接某台主机
sshpass -p password ssh root@192.168.1.2
2、远程执行脚本
sshpass -p password ssh root@192.168.1.2 "sh /path/to/script.sh"
3、执行命令
sshpass -p password ssh root@192.168.1.2 "ls" //单条命令
sshpass -p password ssh root@192.168.1.2 "cd /home/;pwd;ls" //多条命令
4、拷贝文件
sshpass -p password scp root@192.168.1.2:/home/fklds.txt ~/
(可以用于服务器之间的文件的分发)
5、解决 ssh 首次链接
解决 ssh 首次链接时,会有 Are you sure you want to continue connecting 询问提示的问题#
当您第一次使用 ssh 连接远程主机时,ssh 命令会提示您确认远程主机的公钥指纹(Are you sure you want to continue connecting ),以确保您连接的是正确的主机。如果您希望避免这个交互式提示,可以在 ssh 命令中添加 -o 选项,并设置参数 StrictHostKeyChecking=no,例如:
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host
上述命令会禁用 ssh 的主机密钥验证,直接建立连接。需要注意的是,这样做可能会存在安全风险,因为无法保证您连接到的是正确的主机,同时也无法检测到中间人攻击等安全问题。
如果您希望永久禁用 SSH 的主机密钥验证,可以在 ssh 配置文件中添加以下配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
上述配置会将 StrictHostKeyChecking 设置为 no,并将 UserKnownHostsFile 设置为 /dev/null,即不再保存已知主机的公钥指纹。这样做同样存在安全风险,需谨慎使用。
=========================================================================
确保在生产环节中密码不会被泄露!!!
参考