使用ssh-key免密登录服务器或免密连接git代码仓库网站

ssh登录服务器场景

假设有两台机器,分别是:

源机器:主机A(hostA),ip:198.168.0.1

目标机器:主机B(hostB),ip:192.168.0.2

ssh-key免密连接原理

源机器想要使用ssh-key免密连接到目标机器,就要先了解ssh-key免密连接的原理(见下图)。

ssh-key免密连接前提

理解了上面的原理图,剩下要做的,无非就是两件事:

(一)在源机器创建ssh-key密钥对

(二)将ssh-key中的公钥写入到目标机器的授权密钥文件里

在源机器创建ssh-key密钥对

第(一)件事很简单:要在源机器(即主机A,ip:192.168.0.1)生成ssh-key密钥对,可以通过ssh-keygen指令 (windows机器可以使用git客户端的git-bash.exe)。

bash 复制代码
# 执行 ssh-keygen --help 可以看到生成ssh-key的可选加密算法类型encryprType有:[-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa],其中rsa是默认的加密算法。
# 推荐使用ed25519加密算法,比默认的rsa算法更快更安全,生成的密钥内容也更短。
ssh-keygen -t ed25519

# 执行上面指令后,第一步会提示生成的私钥文件的默认路径(即~/.ssh/id_{encryptionType},默认保存到当前用户的.ssh目录(即~/.ssh/))(如有需要可自行修改路径或文件名),第二第三步是二次确认访问该ssh-key的密码,一般都留空直接回车。

三次回车后,可以在当前用户home目录的**.ssh文件夹** (即**~/.ssh/** )找到该ssh-key密钥对:id_ed25519id_ed25519.pub 。其中带.pub后缀的为公钥不带.pub后缀的为私钥。这两个文件的内容都是文本,可以编辑和查看。

将ssh-key中的公钥写入到目标机器的授权密钥文件里

第(二)件事也很简单:要完成目标机器(即主机B,ip:192.168.0.2)对源机器(即主机A,ip:192.168.0.1)的ssh-key授权,有两种方式:

方式1、在主机A通过ssh-copy-id指令将本机的公钥文本内容写入到主机B的授权密钥文件里

如果主机B的ssh端口是默认的22端口,也可以省去- p 22。如果是要登录主机B的非root用户,则修改为目标用户的用户名。这种方式需要输入目标用户的登录密码。

bash 复制代码
ssh-copy-id [-p 22] root@192.168.0.2

#输入主机B用户的登录密码后,执行成功则可以在主机B的目标用户home目录的.ssh文件夹(即~/.ssh/)的authorized_keys文件 (即授权密钥文件)看到成功追加了主机A的ssh-key公钥(即id_ed25519.pub)的文本内容。

方式2、可以跳过ssh-copy-id指令,直接登录主机B的目标用户,编辑目标用户的授权密钥文件 (即**~/.ssh/authorized_keys** ,++没有该文件则需用touch指令先创建该文件++),把主机A的ssh-key公钥(即id_ed25519.pub)的文本内容追加进来。

ssh-key免密登录目标机器

上述两个前提完成了,就可以在源机器(即主机A,ip:192.168.0.1)执行ssh指令通过ssh-key免密登录到目标机器(即主机B,ip:192.168.0.2)。

bash 复制代码
ssh [-p 22] root@192.168.0.2

如果想在源机器上使用ssh工具(比如XShell、WindTerm、MonaXterm等)通过ssh-key免密登录到目标机器呢?

打开ssh工具,填写目标机器(即主机B,ip:192.168.0.2)的ip、端口、用户名,然后输入登录密码的界面通常都会有另一个选项或选项卡,一般叫做"public key"或"ssh key"之类的。点击该选项或选项卡会要求选择密钥文件或身份文件,选择ssh-key私钥 (即id_ed25519文件)然后就可以免密登录了。


ssh-key免密连接git站

现在常用的git代码仓库网站(简称git站)有:gitee、coding、github、gitlab、bitbucket等。

在git站注册了账号后,可以进入账号设置里面添加ssh-key,从而实现你本地机器免密clone、pull、push你在该git网站的仓库(即项目代码)。这个功能利用的就是ssh-key免密连接原理。

git站的这个功能和使用ssh-key免密登录服务器就仅仅是第(二)步的操作方式不同而已:

都是采用的方式2,只不过源机器的ssh-key公钥(即id_ed25519.pub)文本内容不是直接写入到目标机器的目标用户的授权密钥文件里,而是粘贴到git站的账号设置里的ssh-key配置项

相关推荐
不惑_14 分钟前
Docker:介绍与安装
运维·docker·容器
梁一哥21 分钟前
Docker Remote API TLS 认证_docker远程接口未授权访问漏洞怎么解决
运维·docker·容器
forestqq22 分钟前
设置JAVA以适配华为2288HV2服务器的KVM控制台
java·运维·服务器
好运yoo23 分钟前
git提交冲突的原因及解决方案
git
凉忆-36 分钟前
nginx安装ssl模块教程
运维·nginx·ssl
謬熙1 小时前
Git使用指南
git
没资格抱怨1 小时前
Git详细使用
git
匆匆整棹还1 小时前
git远程和本地创建分支并关联
git·github
shuangrenlong1 小时前
git 多账号配置
git
johnny_hhh2 小时前
在Rocky Linux 9上部署NFS服务并对其进行权限配额管理以及监控
linux·运维·服务器