通过密码登录远程Linux是比较麻烦的一件事,尤其在执行自动化程序的时候,为了避免因为输入密码而程序被卡住,所以我们需要免密登录。

SSH通过公钥登录远程Linux服务的步骤

1. 生成公钥和私钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[xin@centos-vps ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xin/.ssh/id_rsa): xin_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in xin_rsa.
Your public key has been saved in xin_rsa.pub.
The key fingerprint is:
SHA256:9NGqjpxtQ79PIc9+DumzufHV8WYeZlPTP2m6Xnlqggg xin@centos-vps
The key's randomart image is:
+---[RSA 2048]----+
| |
| . |
| . . . |
| . . o .|
| S + . oo|
| E .. + o X|
| o.o .B @O|
| . =+ o+o=O*=|
| +.o..oO%= .|
+----[SHA256]-----+
[xin@centos-vps ~]$

2.查看生成的私钥和公钥的文件

1
2
3
4
[xin@centos-vps ~]$ ll
total 8
-rw-------. 1 xin xin 1675 Jul 19 14:15 xin_rsa
-rw-r--r--. 1 xin xin 396 Jul 19 14:15 xin_rsa.pub

3.公钥内容添加到需要远程登录的Linux文件

1.第一种方法

文本打开xin_rsa.pub文件,将里面的内容 copy 到liunx服务器文件~/.ssh/authorized_keys,如果文件路径不存在请新建

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0y4IVnSNPD3drE6c1Lc+JUc1sXBMyXxqaob/aUdO5V9bU83U7sTtixTYb7D+/lna2JXJrohyVyieZ8q9ITsySuHOqK0JK8oC+O5kJp1zSWIfKUXyUasHpISRuP2SfNd7BX1eR/61KEPcd3/ft7Pd6CphgcEUCab9CyIM1Zj6xu12GDdwPz/51jUvvF+mdzJTqZcu8lECLxlUr+JHBnNKiwVfmwV9JntIIBWklYDF5Haa99mX6bYfEiZb0GO+Hf5nOLXbjZewrX4E+KBQPyNuESc5GRGk7M9SAbGJFahOup/NqemD9OnjXmampVMzAs1dZanaNHhcNeudu7JOnhyGBQ==

1
vim ~/.ssh/authorized_keys

1.第二种方法

通过命令自动添加公钥内容

1
ssh-copy-id -i ~/.ssh/xin_rsa.pub yourusername@yourhostname

命令执行完后,公钥内容会自动添加到~/.ssh/authorized_keys

4.SSH密钥登录Linux

在windows下,使用SecureFX SSH客户端登录Linux

1.新建会话连接

公钥打勾,点击属性进行配置
image

2.配置公钥登录

选择使用会话公钥设置
选择公钥在电脑上的路径
配置完成后就可以不许要密码的情况下登录了
image

配置好密钥仍然无法登录的解决方案

1.打开服务器的 /etc/ssh/sshd_config,确认含有下面配置

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
  1. 重启ssh服务
1
service sshd reload