我想用这个命令连接到我的 ssh:
ssh 主机@myhost ls -l /
但我想在上面的命令中输入我的密码,这可能吗?例如我们的命令是这样的:
ssh 主机@myhost mypassword ls -l /
答案1
要使用无密码 SSH,您需要设置在您的系统和目标系统上使用的密钥。
[yoursystem] $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/youruser/.ssh/id_rsa.
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub.
The key fingerprint is:
f0:7e:55:93:06:b6:c5:6f:68:67:d5:04:7f:2f:ef:df youruser@yoursystem
然后将id_rsa.pub文件传输到目标系统。
然后在目标系统上将公钥添加到授权密钥列表中:
cat id_rsa.pub >> ~/.ssh/authorized_keys
登出。
如果您将密钥上的密码留空,那么您现在就可以运行该命令,而无需提示输入密码(您的密钥:id_rsa
系统上的私钥和公钥id_rsa.pub
将负责身份验证)。
如果您已经为您的私钥创建了密码(推荐),那么您需要运行ssh-agent
以将密码保留在内存中:
[yoursystem] $ eval `ssh-agent`
Agent pid 1231
[yoursystem] $ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/youruser/.ssh/id_rsa:
Identity added: /home/youruser/.ssh/id_rsa (/home/youruser/.ssh/id_rsa)
然后,ssh-agent 将负责在您使用私钥时提供密码(重要的是,私钥受密码保护,并且密码不存储在文件中)。
答案2
尝试使用 ssh 密钥进行身份验证。请参阅 man ssh-keygen。这是更安全的方法。
使用:
"-o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=0 -o ConnectTimeout=30 -o ServerAliveInterval=15"
禁用交互性。
答案3
不,您不能这样做,因为这样密码就会被系统上的任何用户看到,因为命令及其参数例如可以通过 ps aux 看到。
如果您需要主机 A 无需人工干预即可通过 ssh 连接到主机 B,则可以使用公钥。将主机 A 的公钥放到主机 B 上,反之亦然,然后它们就可以无需密码相互连接。
答案4
你也可以使用一款名为密码。它会向系统上的任何人公开您的密码,但不需要密钥,无需任何准备,而且设置起来相对简单。您可能应该会拥有密钥,但这并不总是可行的。