在 Linux 命令中使用 SSH

在 Linux 命令中使用 SSH

我想用这个命令连接到我的 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

你也可以使用一款名为密码。它会向系统上的任何人公开您的密码,但不需要密钥,无需任何准备,而且设置起来相对简单。您可能应该会拥有密钥,但这并不总是可行的。

相关内容