因此,我需要使用 ssh 以许多不同的用户身份登录到服务器,并且我厌倦了每次从文件中复制密码,其中包含用户的密码。我无法将其更改为不使用密码,它不是我的,它是用于游戏的。
我尝试过使用:
$ cat /path/to/myfile | ssh user@localhost
我收到一条消息,说不会分配伪终端,因为 stdin 不是终端。
我不太确定它应该如何工作。
答案1
SSH 密钥
首先,最适合您的解决方案是创建新的 ssh 密钥对并使用此密钥登录所有服务器(或某些服务器,根据偏好)。如果你不知道怎么做,你可以在 stackexchange 上找到很多次,但是快捷方式:
ssh-keygen; ssh-copy-id your-host
基本上,您应该为密钥设置密码,这样您只需使用一个密码登录一次。
SSH 通行证
但是,如果您确实坚持使用文件中的密码,则可以按照注释中的描述非常简单地做到这一点:
sshpass -f /path/to/myfile ssh user@localhost
但请注意,这并不是使用ssh
明文存储的密码的真正首选方法。
预计
expect
您可以使用如下脚本执行相同的操作:
#!/usr/local/bin/expect
spawn ssh [email protected]
expect "password:"
send "your_password\n";
interact