- 本地生成ssh key
使用命令ssh-keygen -t rsa -b 4096
生成ssh key,生成好的路径在:
- macOS/linux:
~/.ssh/id_rsa.pub
- win:
C:\Users\your-user\.ssh\id_rsa.pub
- 上传服务器
macOS / Linux机器超级容易:ssh-copy-id your-user-name-on-host@host-fqdn-or-ip-goes-here
windows:使用powershell 运行:
$REMOTEHOST="your-user-name-on-host@host-fqdn-or-ip-goes-here"
scp "$env:USERPROFILE\.ssh\id_rsa.pub" "${REMOTEHOST}:~/tmp.pub"
ssh "$REMOTEHOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
但是我的服务器ssh端口号是改过的,试了一下这个脚本不行,我们手动重现这个过程也不难:
- 服务器上
mkdir -p ~/.ssh && chmod 700 ~/.ssh
- 在本地打开复制public-key
- 服务器
sudo vim ~/.ssh/authorized_keys
, 若里面已经有内容,回车后将复制的内容插入新的一行即可,若没有直接插入,:wq保存退出。 -
chmod 600 ~/.ssh/authorized_keys
完成
- 上传服务器更新(2021.06.25)
windows下,如果安装了git bash, 直接一条命令搞定:
cat id_rsa.pub | ssh root@服务器ip -p 服务器ssh端口 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
如果确定服务器上.ssh文件夹存在,也可以去掉mkdir -p
- 设置服务器允许密钥登录:
打开sudo vi /etc/ssh/sshd_config
修改:
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes
#注意这里先不要yes,测试成功后再
#PasswordAuthentication no
- 重启ssh服务并连接测试
service sshd restart
客户机
ssh root@你的ip -p 你的端口号
没问题的话就直接连上了
- BOUNS:vscode remote config文件设置:
Host 服务器ip
HostName 服务器ip
Port 服务器端口
User root
IdentityFile C:\\Users\\Roy\\.ssh\\id_rsa
- 如果使用自建
gitlab
,还要注意在gitlab设置中添加自己的id_rsa.pub
; 否则以ssh方式操作git会询问密码