后端开发需要掌握的SSH命令和技巧

后端开发需要掌握的 SSH 命令和技巧

本教程仅针对MacOSLinux平台,不适用Windows

1. 常用 SSH 命令

  • 生成本机上的 ssh 密钥对
1
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

生成的公钥、私钥在~/.ssh目录下:

image-20201229134915683

  1. id_rsa是私钥
  2. id_rsa.pub是公钥,可以拷贝里面的字符串放到 Github 的后台,使用 Git 协议可以免密
  3. config是配置文件,后面会详细讲
  4. know_hosts是你信任的服务器列表,连接服务器,输入yes后会加一条
  • 连接服务器
1
ssh -p port user@server_ip
  • 文件拷贝
1
2
3
# 注意这里的P用的大写的
scp -P port local_file user@server_ip:server_folder
scp -P port user@server_ip:server_file local_folder

2. 命令简化和免密

可以看到每次连接服务器或者拷贝文件都需要输入完整的用户名、ip 之后还要输入密码,非常麻烦

先使用配置文件来简化命令:

1
vi .ssh/config

这样配置:

1
2
3
4
Host dns
HostName config.rigerwu.com
User riger
Port 22

Host后是你给服务器取的别名,我这里用的“dns”HostName填域名或ip都可以,然后是用户名和端口。

以后我们直接使用ssh dns就可以访问服务器,名字还可以用tab来代码提示:

image-20201229143645153

包括scp命令也可以来简化:

1
scp local_file dns:server_folder

再来做免密登录,使用ssh-copy-id命令把自己的公钥,拷贝到服务器端的 .ssh/authorized_keys中,这样以后就不用输入密码了:

image-20201229144130799

这个再ssh dns就已经可以直接免密登录了:

image-20201229144411394

甚至scp命令都能tab提示远程的路径:

image-20201229144342128

配合上zsh的代码提示或 alias,常用的文件拷贝就变得非常方便!

3. 解决 SSH 超时中断

1
vi .ssh/config

这样配置:

1
2
3
4
Host *
TCPKeepAlive yes
ServerAliveInterval 60
ServerAliveCountMax 5

但是有些服务端还是会一段时间无输入就终端连接,在服务端的.bash_profile中增加一行:

1
export TMOUT=0

设置不限制超时时间,这样就可以保持连接不中断了

Enjoy it !


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!