一个常用的 ssh 配置实例

Feb 09 2020

通常在配置 git 代码托管服务器的时候,比如 github, gitee, gitlab 等,添加一个 ssh key 就能免密访问,这里的配置方法如下

生成 ssh key

如果不确定是否已经生成过 ssh key,则尝试切查看 .ssh 目录

Mac OS

1
2
> ls ~/.ssh
id_rsa id_rsa.pub known_hosts

Windows

需要已安装了 git,查看 C:\Users%用户名%\.ssh

如果存在,则 id_rsa.pub 就是公钥,其中的文本内容,整个复制后用来添加到托管服务器中

如果不存在该目录,通过以下命令生成,遇到的提示信息都直接回车

1
2
3
4
5
# Windows 需要在 git bash 中操作

# -t 密钥类型,默认是 rsa,可以省略
# -C 注释,比如邮箱
ssh-keygen -t rsa -C "your_email_address"

known_hosts

当 ssh 连接到远程服务器的时候,会将该服务器的 pub key 和 ip 信息保存到 known_hosts 文件,如果下次这个 ip 被另一台服务器使用,则 ssh 免密登录时会发出警告,提示安全风险,是安全性策略的一个配置文件

复制公钥到远程服务器

1
ssh-copy-id 服务器用户名@服务器 ip

会将它写入到服务器 ~/ .ssh/authorized_key 中,使用时要输入远程机器的密码

之后 ssh 登录远程服务器时就不用再输入密码

ssh 远程登录

1
2
3
4
5
6
7
8
# 常用的登录方法
ssh 服务器用户名@服务器 ip

# 本地和远程服务器用户名一致,省略用户名
ssh ip

# 调用图形界面
ssh -X 服务器用户名@服务器 ip

之后进入远程服务器的 shell,可以进行命令操作了

ssh 远程拷贝

同本地 cp 操作类似,但是需要指定服务器名和 ip

本地复制到远程

1
2
scp 本地文件 server_name@server_ip: 远程路径
scp -r 本地目录 server_name@server_ip: 远程路径

远程复制到本地

1
2
scp server_name@server_ip: 远程文件 本地路径
scp -r server_name@server_ip: 远程目录 本地路径

ssh 远程命令

有时我们希望将远程命令写入脚本,方便批量处理,可以执行单独的 ssh 命令

1
2
ssh server_name@server_ip "df -h"
ssh server_name@server_ip "pwd; ls"