将位于文件中的密码通过管道传输到 ssh 命令

dan*_*iel 8 password ssh pipe cat

因此,我需要使用 ssh 以许多不同用户的身份登录到服务器,并且我厌倦了每次从包含用户密码的文件中复制密码。我无法将其更改为不使用密码,这不是我的,而是用于游戏的。

我试过使用:

$ cat /path/to/myfile | ssh user@localhost

我收到一条消息,说不会分配伪终端,因为 stdin 不是终端。

我不确定它应该如何工作。

Jak*_*uje 16

SSH 密钥

首先,最适合您的解决方案是创建新的 ssh 密钥对并使用此密钥登录到您的所有服务器(或某些服务器,根据偏好)。如果你不知道怎么做,你可以在stackexchange上找到很多次,但快捷方式:

ssh-keygen; ssh-copy-id your-host
Run Code Online (Sandbox Code Playgroud)

基本上你应该为你的密钥设置密码,这样你就只能用一个密码登录一次。

SSH 通行证

但是,如果您真的坚持使用文件中的密码,您可以按照评论中的描述非常简单地做到这一点:

sshpass -f /path/to/myfile ssh user@localhost
Run Code Online (Sandbox Code Playgroud)

但请注意,这并不是使用ssh以明文存储的密码的真正首选方法。

预计

你可以使用这样的expect脚本来做同样的事情:

#!/usr/local/bin/expect
spawn  ssh user@yourserver.com
expect "password:"
send "your_password\n";
interact
Run Code Online (Sandbox Code Playgroud)

  • @daniel,你对 Jakuje 很粗鲁,这对整个社区来说都是一个问题。这与传统论坛有着截然不同的文化。你可能会认为你不喜欢他们的回答,但粗鲁的做法会阻碍其他人给出更好的答案。然后像我这样的人来到这里并没有答案。然后如果我再问这个问题,它会被标记为重复,也没有人会回答那个问题。如此有效,您可以通过一条尖锐的评论阻止所有 Google 搜索者获得解决方案(因为 SE/SO 始终是热门搜索)。这就是为什么我们说“要友善”。 (3认同)