SSH 的常用场景

记一下 SSH 的使用场景,每次忘记都要查,真的很恼火

配置 SSH 向 Github 提交代码

生成 SSH 秘钥

ssh-keygen -t ecdsa -b 521 -C "for github use"
复制代码

上面的命令生成了用 ECDSA 方式加密的秘钥。长度为 521 bit(-b 521),对这个秘钥的注释 -C "for github use"

选择加密算法

-t 选择加密的算法,可以选择 ECDSARSADSAOpenSSH 5.7 建议默认使用 ECDSA,因为它生成的密钥更小,安全性更高。在 5.7 版本之前可能不支持 ECDSA 加密,可以换用其他的加密方式

可以通过以下命令查看当前 SSH 版本

ssh -V
# OpenSSH_7.6p1, LibreSSL 2.6.2
复制代码

选择秘钥的存储位置和密码

Enter file in which to save the key (/Users/aximario/.ssh/id_ecdsa): /Users/aximario/.ssh/github
# 默认的秘钥名是 id_ecdsa 我这里直接改成了 github,因为我要管理多个秘钥,想怎么命名都可以
Enter passphrase (empty for no passphrase): 
# 可以输入一个密码,默认为空就好,直接回车键,如果有密码,提交代码时还需要输入密码才行
Enter same passphrase again:
# 需要再次确认,再一次回车键
Your identification has been saved in /Users/aximario/.ssh/github.
Your public key has been saved in /Users/aximario/.ssh/github.pub.
The key fingerprint is:
SHA256:wAZS2NXoRNsXO/mIzA1e5iY7Vtp7sd2a500h13oG4OQ for github use
The key's randomart image is:
+---[ECDSA 521]---+
|  .+oooo  .      |
|  ...ooo.  +     |
|     o= o B o    |
|     ..= O B .  .|
|        S * E..o.|
|         B  . oo.|
|        = .  +..+|
|       . . .o .=+|
|          ..  o+o|
+----[SHA256]-----+
复制代码

好了,这样,你的秘钥就生成成功了。可以通过 ls ~/.ssh 命令查看一下,应该会有 github(私钥) 和 github.pub(公钥) 两个文件。然后就可以把公钥拷到 Github 里了。

pbcopy < ~/.ssh/github.pub
# 把公钥拷贝到剪贴板
复制代码

然后在 Github 里 Settings -> SSH and GPG keys 里添加你的公钥。好了,搞定。

配置多个 SSH 秘钥

很多时候我们不仅需要有 Github 上的秘钥,还要一个公司用的,所以要同时存在多个秘钥,比方我们再来一个 Gitlab 的秘钥,步骤和上面生成 Github 秘钥的方式一样,我只是把秘钥命名为了 gitlab

ssh-keygen -t ecdsa -b 521 -C "for gitlab use"
Enter file in which to save the key (/Users/aximario/.ssh/id_ecdsa): /Users/aximario/.ssh/gitlab
# ...后面一样的,包括把公钥放到 Gitlab 上
复制代码

然后我们看一下我们现在的 SSH 秘钥

ls ~/.ssh
# github github.pub gitlab gitlab.pub
复制代码

接着在 SSH 目录下新建一个 config 文件

vi config
复制代码

然后贴上下面的配置,保存:

# --------- Github -----------
Host github.com
    IdentityFile /Users/aximario/.ssh/github
# ----------------------------

# --------- Gitlab -----------
Host gitlab.com
    IdentityFile /Users/aximario/.ssh/gitlab
# ----------------------------
复制代码

好了,这样就配置完了,克隆不同的仓库会用对应的 SSH 秘钥

不同的 Git 仓库配置不同的账户和邮箱

因为有了不同的 Git 仓库,我们肯定会有公司的邮箱和自己的 Github 邮箱。

首先可以配置全局的邮箱和 email 为公司

git config --global user.name "your_name"
git config --global user.email "your_email"
复制代码

因为这样可以保证默认是公司的邮箱和用户名,在公司的提交上不会出现自己的用户名的尴尬。然后对于自己的项目,可以在克隆下来之后,进入到项目目录,手动设置为自己的用户名和邮箱

git config user.name "your_name"
git config user.email "your_email"
复制代码

使用 SSH 登录远程服务器

登录服务器的常见方式有两种,一种是通过账号密码登录,另一种是通过 SSH Key 登录

账号密码登录

ssh username@remote-server.org
复制代码

如果是第一次登录,会提示类似于下面的信息:

The authenticity of host 'remote-server.org (123.123.88.66)' can't be established.
ECDSA key fingerprint is SHA256:xpJjulKLQtQ2CQwkmONfsxszLKC0E36gTsEGT4fRBYs.
Are you sure you want to continue connecting (yes/no)? yes
复制代码

这是提示你是否确定这个服务器是你想要登录的服务器,并且把这个服务器加入到已经确认的服务器列表中。一般我们输入 yes 就好了

然后就会提示你输入登录的密码,如果密码正确就能登录到远程服务器的 shell 了。

SSH Key 登录

同样使用上面的方式生成新的秘钥对,加入我们生成的秘钥对为 ~/.ssh/demo~/.ssh/demo.pub

然后我们把公钥上传到远程服务器,记住是公钥,别传错了,带 .pub 的那个

ssh-copy-id -i ~/.ssh/demo.pub username@remote-server.org
复制代码

-i 后面是你公钥的地址

username@remote-server.org 是你自己服务器的名字和你的登录名,例如:

  • root@axi.name
  • axi@123.123.88.66

接着在 ~/.ssh/config 里加上下面的配置

# --- demo server -----
Host demo
    User root
    HostName remote-server.org
    IdentityFile /Users/aximario/.ssh/demo
# ----------------------------
复制代码

然后就可以通过 ssh demo 来登录服务器了,如果是第一次登录也会出现上面的提示。

发布了152 篇原创文章 · 获赞 48 · 访问量 23万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览