我希望能够通过 ssh 登录远程,而不必一直输入密码。
- 我该如何设置?
- 执行无密码会话是否需要不同的命令?
答案1
回答
执行此命令(如果您已经有 SSH 密钥,则可以跳过此步骤):
ssh-keygen
ssh-copy-id user@host
## or if your server uses custom port no:
ssh-copy-id "user@host -p 1234"
复制密钥后,即可正常通过 ssh 进入机器:
ssh user@host
现在,您可以从执行命令的特定机器上登录,而无需输入密码。
例子
not-marco@rinzwind-desktop:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa):
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo. |
|*B.+ . . |
|*=o . o . |
| = . = |
|. o S |
|E. |
| o |
| . |
| |
+-----------------+
not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server
not-marco@server's password:
Now try logging into the machine, with "ssh 'not-marco@server'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
解释
这假设您已经可以通过 SSH 成功连接到您的服务器。
您需要生成一个 SSH 密钥对,这样您无需使用密码即可识别自己的身份。您可以选择使用密码保护密钥,但密码可以留空,这样就可以完全不使用密码进行 SSH 访问。
- 首先,运行以下命令创建 SSH 密钥对,
ssh-keygen
这将创建一个id_rsa
和id_rsa.pub
文件。pub
文件存储在服务器上,而私钥 (id_rsa
) 则留在您手中,是您的身份证明。 - 接下来将公钥复制到您的服务器,将用户替换为您的远程用户,将服务器替换为机器的 DNS 名称或 IP 地址。它会提示您输入 SSH 密码,输入后如果一切顺利完成,您将能够通过而无需密码
ssh-copy-id user@server
访问机器。ssh user@server
参考
答案2
键入以下命令:
ssh-keygen
按下Enter键直到得到提示
ssh-copy-id -i root@ip_address
(它将要求输入主机系统的密码)
ssh root@ip_address
现在您应该可以无需任何密码登录。
答案3
我通常这样做的方式如下:
ssh-keygen -t rsa
(当提示输入密码时,请留空)
然后:
cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'
(这要求文件夹 .ssh 位于目标主机名的主目录中,其中包含 authorized_keys 文件)
当然,将用户名替换为所需的用户名,将主机名替换为所需的主机名或 IP 地址
此后,只需像以前一样通过 SSH 连接到该框即可。
答案4
禁用密码验证
由于许多使用 SSH 服务器的人都使用弱密码,因此许多在线攻击者会寻找 SSH 服务器,然后开始随机猜测密码。攻击者可以在一小时内尝试数千个密码,只要有足够的时间,甚至可以猜出最强的密码。推荐的解决方案是使用 SSH 密钥代替密码。要像普通 SSH 密钥一样难以猜测,密码必须包含 634 个随机字母和数字。如果您始终能够使用 SSH 密钥登录计算机,则应完全禁用密码验证。
如果您禁用密码验证,则只有您特别批准的计算机才可以连接。这大大提高了您的安全性,但使您无法在未经预先批准的情况下从朋友的 PC 连接到自己的计算机,或者在您不小心删除密钥时从自己的笔记本电脑连接到自己的计算机。
建议禁用密码验证,除非您有特殊原因。
要禁用密码验证,请在 sshd_config 文件中查找以下行:
#PasswordAuthentication yes
将其替换为如下行:
PasswordAuthentication no
保存文件并重新启动 SSH 服务器后,登录时甚至不需要输入密码。
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication