ssh密钥登录

生成ssh-key

ssh-key
ssh-keygen   ssh-keyscan
[root@172-20-58-183 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ej95I9+ni7o4bMMu0zRvNXkQ3jl9iRp34PNtNAEQn7k root@172-20-58-183
The key's randomart image is:
+---[RSA 2048]----+
|           oo..  |
|          . ..o. |
|      .  . o.*o o|
|       o .o.+=o+o|
|      . S oo+E+oo|
|      o. =++.  .o|
|     = o ..o. .. |
|    o B.o  . o   |
|     =o+oo. o.   |
+----[SHA256]-----+

会在 ~.ssh 下生成 id_rsa, id_rsa.pub 两个文件,分别是 私钥/公钥。

生成authorized_keys

公钥需保存到远程服务器 ~/.ssh/authorized_keys 里,私钥由客户端本地留存。 要保证 .ssh 和 authorized_keys 都只有用户自己有写权限。否则验证无效。

cat .ssh/id_rsa.pub > .ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

测试key是否可以登录

ssh -i Desktop/id_rsa [email protected]

ssh禁止密码登录

$ vim /etc/ssh/sshd_config
# 禁用root账户登录,非必要,但为了安全性,请配置
PermitRootLogin no

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~/.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
PubkeyAuthentication yes

# 有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no

参考链接