通过ssh公私钥登录服务器

Posted by Alice on Friday, November 1, 2024

登录服务器的过程太繁琐,简化一下

1. 打开文件夹

cd ~/.ssh

查看里面有已经生成的公私钥,带 pub 后缀的是公钥,不带的是私钥

Figure-1

如果没有,使用命令 ssh-keygen 生成。

一个公钥长这样 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7xyz... [email protected]

分为三个部分:

密钥类型: 如 ssh-rsa、ssh-dss、ecdsa-sha2-nistp256、ssh-ed25519 等,这表明了公钥使用的加密算法。

密钥数据: 一串经过 Base64 编码的数据,这是公钥的主体部分。

注释(可选): 通常是创建密钥时附加的注释,如电子邮件地址或用户名。注释部分对于 SSH 的功能没有影响,它主要用于标识公钥的所有者,便于管理。

2. 登录要访问的服务器

将生成的公钥,(通常在 ~/.ssh 文件夹下带 pub 后缀的文件 如:id_rsa.pub)添加到服务器的 ~/.ssh/authorized_keys 文件中。

如果服务器没有.ssh 文件夹,则登录服务器后使用以下命令生成:

sudo mkdir -p /root/.ssh // -p 意思是生成.ssh 文件夹的同时如果没有 root 文件夹,则也同步生成这个中间文件夹,不带-p 如果没有/root 就会报错

sudo chmod 700 /root/.ss // 700 表示将所有者权限设为 rwx(读、写、可执行) 600 是 rw-

vim ~/.ssh/authorized_keys // 使用 vim 打开文件。这个文件通常是存储允许通过 SSH 公钥认证方法登录系统的公钥。打开后把自己本地的公钥按下面的格式粘贴。

# John's public key
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQC7xyz7a8bW2c9X2J2Y4Fp5eEJxQ2R3PLVNoxz+5Qp9Uj [email protected]
# Alice's public key
ssh-rsa
AAABBvaC1yc2EAADADAQABH0JQXYZu7Q [email protected]

如果不是 root 用户使用 ssh 登录,可能该用户的目录权限需要改一下,我这里是使用 root 登录,所以不用改。

3. 检查服务器的 SSH 配置文件(/etc/ssh/sshd_config)中是否启用了密钥认证

sudo vim /etc/ssh/sshd_config

PubkeyAuthentication yes //找到设置,改成yes

AuthorizedKeysFile .ssh/authorized_keys //查看默认的查找公钥的文件夹,是否是我们刚刚存放公钥的文件夹

保存

sudo systemctl restart sshd // 重启

4. 登录

ssh -p 22 [email protected]这样就可以用 ssh 公私钥登录了

可以再简化一些

vim ~/.ssh/config

在里面输入设置

Host pdfdev
HostName 172.19.31.209
User root
IdentityFile ~/.ssh/my_private_key // 这里改成自己的私钥

保存

之后输入命令ssh pdfdev 输入创建公私钥时设置的密码,登录成功!