麦克斯仇
Think different
160
文章
47124
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Linux 配置 ssh 免密登录
创建日期:
2020/07/17
修改日期:
2023/05/18
Linux
## 服务端 #### 1. 编辑ssh服务配置 ```bash vim /etc/ssh/sshd_config ``` #### 2. 设置如下内容 ```bash # 启用公钥私钥配对认证方式 PubkeyAuthentication yes # 公钥文件存储位置 AuthorizedKeysFile .ssh/authorized_keys # 禁用DNS解析 UseDNS no # 关闭密码登录(免密登录成功后设置) PasswordAuthentication no ``` #### 3. 重启ssh服务 ```bash systemctl restart sshd.service ``` ## 客户端 ### 本地Linux系统 #### 1. 生成公钥私钥对 ```bash # 开始生成,-t rsa 可以省略,默认rsa格式 ssh-keygen -t rsa 1. 输入密钥名称(直接回车使用默认名称id_rsa) 2. 输入密钥的密码(直接回车使用空密码) 3. 再次输入密码(直接回车使用空密码) ``` > 默认密钥存储位置在`~/.ssh/`,一次生成产生私钥`id_rsa`与公钥`id_rsa.pub`两个文件 #### 2. 发送公钥到服务端机器上 ```bash # 1. -i 指定公钥文件,一定是xxx.pub # 2. 若生成时使用默认名称,则此处 -i ~/.ssh/id_rsa.pub 可以不写 # 3. 若服务端端口是22,则 -p 22 可以省略 # 4. 若登录服务端使用root用户,则 root@ 可以省略 ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@serverIP ``` > 服务端会把公钥内容存储在`~/.ssh/authorized_keys`文件内,一行一个公钥,内容示例如下 ssh-rsa AAAAB3......nOHbWtdV root@client ssh-rsa AAAAB3......gAMdp5k3 root@work #### 3. 验证登录 ```bash # 1. 若生成时未设置自定义名称,则 -i ~/.ssh/id_rsa.pub 可以省略 # 2. 若服务端端口是22,则 -p 22 可以省略 # 3. 若登录服务端使用root用户,则 root@ 可以省略 # 4. 若生成时设置了秘钥的密码,命令输入完回车后需要输入秘钥的密码 ssh -i ~/.ssh/id_rsa.pub -p 22 root@serverIP ``` ### Xshell客户端 #### 1. 工具---用户密钥管理者---生成   #### 2. 根据向导完成生成 密钥类型:RSA 密钥长度:2048 下一步  等待生成后,下一步  密钥名称:自定义即可 密码:可以为空 下一步,若密码为空,则会提示密钥未加密,继续即可  公钥格式:SSH2 - OpenSSH 保存密钥文件 完成 #### 3. 上传公钥文件 使用密码方式连接服务器,将上一步保存的公钥的文件内容写入到`~/.ssh/authorized_keys`,若没有该文件,则手动创建并写入内容,手动创建后将文件权限修改为`600` ```bash # 推荐方法: # 1. Xftp 上传 xxxxx.pub文件 # 2. 创建文件夹(存在则忽略) mkdir -p .ssh # 3. 查看是否有 authorized_keys 文件 cat ~/.ssh/authorized_keys # 4. 若没有该文件或者有该文件或者无内容,则执行以下命令创建并写入文件 cat xxxxx.pub >> ~/.ssh/authorized_keys # 5. 若有文件且有内容,则执行以下内容添加一个换号符后再执行上一条命令 echo >> ~/.ssh/authorized_keys # 6. 检查文件权限 chmod 600 ~/.ssh/authorized_keys ``` #### 4. Xshell使用公钥连接 1. `Alt + N`新建一个连接 2. 连接信息内填写名称、主机号、端口 3. 用户身份验证中方法选择`Public Key`,填写用户名,用户密钥选择刚刚创建的密钥,若有密码则填写密码 4. 点击连接即可
22
全部评论