4 SSH

通过SSH登录远程服务器

4.1 SSH登录

假设user是用户名,hostname是IP地址或域名,则按如下方式登录

1
ssh user@hostname

首次登录会提示之前未登录过这台服务器,输入yes或直接回车会把该服务器的信息记录到~/.ssh/known_hosts中,然后再输入密码就能登录到该服务器。若要退出,可用命令exit

SSH默认端口为22,可显示声明服务器端口号

1
ssh user@hostname -p 22

配置登录

可为ssh user@hostname起别名,方便登录。在~/.ssh/config中添加服务器信息

1
2
3
Host myserver
HostName IP地址或域名
User 用户名

之后就能使用ssh myserver登录到远程服务器。

密钥登录

首先创建密钥,输入以下命令,一直回车即可。

1
ssh-keygen

然后~/.ssh下会生成两个文件

  • 私钥:id_rsa
  • 公钥:id_rsa.pub

可把公钥内容复制到远程服务器的~/.ssh/authorized_keys中,或直接使用命令ssh-copy-id myserver

4.2 SSH命令

SSH命令方便写脚本,基本格式如下

1
ssh user@hostname command

command就是shell命令,取决于服务器是什么系统

在SSH中,单引号''括起的表达式或命令可以直接在远程服务器执行,而双引号""括起的表达式不能执行,只能视为字符串,这与在本地服务器不一样。

4.3 SSH传文件

为了实现两个服务器传输文件,可用命令scp把源文件source复制到destination

1
scp source destination

也可指定多个文件复制到destination

1
scp source1 source2 ... destination

如果需要复制文件夹,需要用参数-r

1
scp -r source destination

本地服务器可省略域名,而远程服务器需要用域名标记myserver:,例如

1
scp -r ~/tmp myserver:homework/

也可指定端口号

1
scp -p 22 source destination

注意,参数-p-r需要在source之前。

为了在远程服务器部署相同的环境,可以用SSH复制配置文件,例如配置vimtmux

1
scp ~/.vimrc ~/.tmux.conf myserver:

这里省略了destination的目录,表示家目录home