macOS 配置 SSH 方法
引言
SSH (Secure Shell) 是一种在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境。维基百科-SSH
SSH 配置
0、在终端输入 cd ~/.ssh
, 若提示没有此目录,可输入 mkdir ~/.ssh
创建 .ssh 目录,然后再执行 cd ~/.ssh
进入 .ssh 目录,再输入以下命令:
1 | $ ssh-keygen -t rsa -C "userEmail" |
如果同时使用多个公私密钥,可以将 SSH KEY 文件命名为 github
进行区分。
1 | $ ssh-keygen -t rsa -C "userEmail" -f ~/.ssh/github |
1、在配置公私密钥的过程中,会要求输入 passphrase 口令(可以不输入,直接回车),如果输入的话,一定要记住口令。
使用多个公私密钥的用户,需要在 SSH 用户配置 ~/.ssh/config
中指定服务所用的公私密钥名称,如果没有 config 文件,那么就自己手动创建一下( vim ~/.ssh/config
即可),并输入以下内容:
1 | Host github.com www.github.com |
or
1 | Host coding.net git.coding.net |
多账号需要在 config 文件中配置以下内容
1 | Host divtao0 |
一个账号添加远程地址时,地址为 git@(Host):(github用户名)/github.git
, 测试连通性 ssh -T git@divtao1
2、输入以下命令,获取公钥,并在相关网站添加公钥。
1 | $ cat id_rsa.pub |
或1
pbcopy < ~/.ssh/id_rsa.pub #将其复制剪切板中
3、测试与服务器的连通性
1 | $ ssh -T [email protected] |
验证成功后,返回信息为:
1 | Hi userName! You've successfully authenticated, but GitHub does not provide shell access. |
4、如果测试连通性失败,请输入以下命令,进行错误的检查
1 | ssh -vT [email protected] |
简单使用
1、配置说明1
2
3
4
5Host alias #自定义别名
HostName ip/domain #SSH服务器的IP或者domain
Port port #SSH服务器端口,默认为22,可以不写此行
User userName #SSH服务器用户名
IdentityFile ~/.ssh/id_rsa #服务器上或者本地公钥对应的私钥的路径
2、测试连通性1
ssh -v alias
3、以 ssh + 别名
方式进行登录1
ssh alias
案例一
借助 Hexo 生成静态网页,并使用 GitHub Pages 进行托管,发布时无需输入密码或用户名。
首先需要在 ./.ssh/config
文件中添加如下配置:1
2
3
4Host devhitao
HostName github.com
User git
IdentityFile ~/.ssh/devhitao_rsa
然后在 _config.yml
文件中,配置 deploy
,这里只要更改 repo
即可。
1 | type: git |
注:GitHub 中的 SSH URL 一般格式为[email protected]:<username>/<project_name>.git
, 假如不配置 ssh 的话,repo 配置应为 [email protected]:username/username.github.io.git
;那么使用 ssh 只需将 [email protected]
替换为 devhitao
即可。
使用代理
ssh 登录主机使用 Socks5 代理方法
1 | ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1086 %h %p" -p 28930 [email protected] |
FQA
1、提示 WARNING: UNPROTECTED PRIVATE KEY FILE!
or It is required that your private key files are NOT accessible by others.
,说明文件是没有受到保护,应该是私有的,所以需要修改文件的权限,不能其他人读取该文件。1
$ chmod 400 id_rsa // r(4) w(2) x(1), user group others
参考资料