通常在配置 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"
|