1. 本地(win/mac)SSH 连接服务器 root 用户
参考链接:https://www.cnblogs.com/zydev/p/5779927.html
1. 本地生成公钥和私钥
ssh-keygen -t rsa -C autodeployment -f id_rsa_deployment
Generating public/private rsa key pair.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in id_rsa_deployment. # 私钥Your public key has been saved in id_rsa_deployment.pub. # 公钥The key fingerprint is:SHA256:iG7PLGiL9g1Y+JxzXLFyFl76A/9ysYrQzX6o9bpM+m4 autodeploymentThe key's randomart image is:+---[RSA 3072]----+| || || o . || . ...* || . ....OS || =.o * * . || . Bo+ . O. o || oo.*+. BE++ ||o.oo o++=OBo |+----[SHA256]-----+
2. 把本地公钥安装到服务器中
方式一:(推荐) 使用 ssh-copy-id 命令安装
通过ssh-copy-id将公钥复制到服务器的 ~/.ssh/authorized_keys 文件中
ssh-copy-id root@172.17.0.4 # 需要输入密码(默认公钥)ssh-copy-id -i ~/.ssh/id_rsa_yangan root@172.17.0.4 # 复制自定义公钥
方式二:(不推荐) 进入服务器手动设定文件和目录的权限
- 登录服务器,修改
.ssh/authorized_keys文件,如果没有则创建一个 - 把本地的公钥
id_rsa_deployment.pub添加到authorized_keys文件中,可以执行下面的命令,也可以手动修改再上传 ```javascript cd ~/.ssh
cat id_rsa_deployment.pub >> authorized_keys # 这一步需要把本地公钥上传到服务器,可以手动修改再上传
<br />如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:```javascript$ chmod 600 authorized_keys$ chmod 700 ~/.ssh
3. 本地连接 服务器
方式一:手动输入秘钥路径
ssh -i ~/.ssh/id_rsa_deployment root@81.70.233.205

连接之后 本地 .ssh/known_hosts 会多一条记录
方式二:通过本地配置 .ssh config
修改 .ssh/config 文件,如果没有创建一个
配置示例
Host github.comUser jaychenIdentityFile ~/.ssh/id_rsa.githubHost 192.168.1.1User ubuntuIdentityFile ~/.ssh/id_rsa.xxx
另一种方式 支持名字的映射
#腾讯云 serverHost tengxunyun # ssh 命令名字Hostname 81.70.233.205 # 服务器名称User root # 用户名PreferredAuthentications publickey # 秘钥方式IdentityFile C:\\Users\\\admin\\.ssh\\id_rsa_deployment # 使用的秘钥地址
上面 config 文件字段含义如下:
Host 指明了远程主机的 ip,除了使用 ip 地址,也可以直接使用网址。
- User 指的是登录远程主机的用户。
- IdentityFile 指明使用哪个私钥文件。
ssh 连接
ssh tengxunyun
方式三:直接使用 ssh userName:hostName 连接服务器
通过 ssh-add 将本地使用的私钥添加到由 ssh-agent 维护的列表中
ssh-add ~/.ssh/id_rsa
执行 ssh root@81.70.233.205 即可直接登录服务器
ssh root@81.70.233.205
2. B 服务器 通过 SSH 连接 A 服务器 root 用户
参考链接:https://juejin.cn/post/6844903906925871111
连接方式和本地连接大致相同
文件权限太大问题
如出现以下报错是,权限太大问题https://blog.csdn.net/qq_34691713/article/details/83987873
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Permissions 0644 for '/root/.ssh/id_rsa_deployment' are too open.It is required that your private key files are NOT accessible by others.This private key will be ignored.Load key "/root/.ssh/id_rsa_deployment": bad permissions
执行以下命令给文件降级
chmod 0600 ~/.ssh/id_rsa_deploymentchmod 0600 ~/.ssh/id_rsa_deployment.pub
ssh-add 不允许执行问题
执行
ssh-add ~/.ssh/id_rsa_deployment
报错
Could not open a connection to your authentication agent.
则需要先执行以下命令,再执行 ssh-add
ssh-agent bash
3. github action 通过 SSH 连接服务器 root 用户
参考链接:https://juejin.cn/post/6844903906925871111
name: deploy for devon:push:branches:- 'dev' # 只针对 dev 分支paths:- '.github/workflows/*'# - '__test__/**' # dev 不需要立即测试- 'src/**'- 'Dockerfile'- 'docker-compose.yml'- 'bin/*'jobs:deploy-dev:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: set ssh key # 临时设置 ssh keyrun: |mkdir -p ~/.ssh/# secrets.WFP_ID_RSA github里面设置的echo "${{secrets.ID_RSA_DEPLOYMENT}}" > ~/.ssh/id_rsa_deployment # 读取 secrets 存入 id_rsa_deployment 文件中chmod 600 ~/.ssh/id_rsa_deployment # 拥有者可读写 此文件ssh-keyscan "81.70.233.205" >> ~/.ssh/known_hosts #- name: deploy # 部署run: |ssh -i ~/.ssh/id_rsa_deployment root@81.70.233.205echo '登录成功'- name: delete ssh key # 删除 ssh keyrun: rm -rf ~/.ssh/id_rsa_deployment
