如何自动使用密码进行 SSH 登录?我正在配置我的测试虚拟机,因此不考虑严格的安全性。选择 SSH 是为了以最低配置实现可接受的安全性。
前任)
echo password | ssh id@server
这不管用。
我记得我按照别人指导我的一些技巧做到了这一点,但现在我记不起我使用了什么技巧……
答案1
$ sudo apt-get install sshpass
$ sshpass -p your_password ssh user@hostname
答案2
虽然你的问题的正确答案是密码(详情请参阅其他答案),还有一种更安全的方法 - SSH 密钥。你只是三个简单步骤远离解决方案:
以下所有命令都在客户端运行,即你的机器
输入以下命令开始生成rsa 密钥对:
# ssh-keygen
当出现消息“输入要保存密钥的文件”时,只需按 Enter 键将文件名留空。
当终端要求您输入密码时,留空即可(警告:请阅读下文)并按 Enter。
然后将密钥对复制到服务器上一个简单的命令:
# ssh-copy-id userid@hostname
您现在可以登录没有密码:
# ssh userid@hostname
警告:即使您加密了整个驱动器,将 SSH 密钥暴露在外而不加密也不是一个好习惯。更安全的方法是,在生成密钥时实际输入密码,然后使用 Keychain(MacOS、Linux)或 SSH 代理记住密码,直到您退出、暂停或超时(具体取决于您的喜好)。
答案3
使用期望:
#!/usr/bin/expect -f
# ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]
spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact
例子:
# ./1.ex password localhost ooshro
spawn ssh ooshro@localhost
ooshro@localhost's password:
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10
Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Tue Mar 1 12:41:12 2011 from localhost
答案4
我很惊讶没有人提到Ubuntu 中的plink
软件包putty-tools
:
plink user@domain -pw mypass [cmd]
它也适用于 Windows,并且语法与 openssh 客户端基本兼容。