1. 安装 ssh 工具

1.1 本地主机

1
sudo apt install openssh-client

1.2 服务器

1
sudo apt install openssh-server

2. 管理 ssh 服务

2.1 查看服务器的 ssh 服务:

1
service ssh status

2.2 启动服务器的 ssh 服务:

1
sudo service ssh start

2.3 关闭服务器的 ssh 服务:

1
sudo service ssh stop

2.4 重启服务器的 ssh 服务:

1
sudo service ssh restart

3. 登录远程服务器

3.1 密码登录

1
ssh user@host

其中,user 为远程主机的登录用户名,host 为远程主机 ip 地址。然后终端会显示要求输入远程主机 user 用户登录密码,正确输入密码后进入到远程主机 user$HOME 目录下。

基于密码登录远程主机的原理大致如下:
基于口令的验证

3.2 免密登录

将本机 ssh-keygen 生成的公匙复制到远程主机上,具体操作如下:

  • 查看本地主机是否生成了 ssh-key,如果文件夹不存在或者没有 id_rsaid_rsa.pub ,说明未生成 ssh-key :
1
ls ~/.ssh
  • 如果本地主机未生成 ssh-key,则手动生成:
1
ssh-keygen -t rsa   # 也可以使用更多选项如 -C youremail@example.com 指定用户邮箱
  • 将本地主机 ~/.ssh 下的公匙复制到远程主机的 ~/.ssh 文件夹(没有就创建一个)下并命名为 authorized_keys(具体复制操作参加下文):
1
scp ~/.ssh/id_rsa.pub user@host:~/.ssh/authorized_keys
  • 然后终端使用 ssh user@host 就可以直接登录远程主机,不再需要输入密码。

基于密码登录远程主机的原理大致如下:
基于密匙的验证

【注】远程主机如果 .ssh 文件夹是手动创建的,则需要设置权限 700(chmod 700 ~/.ssh);如果 authorized_keys 文件是手动创建而不是直接复制本地主机公匙,则需要设置权限 600(chmod 600 ~/.ssh/authorized_keys),否则免密登录可能失败。

4. 操纵远程主机

4.1 复制文件到远程主机

在本地主机终端下,使用 scp 命令:

1
2
scp filename user@host:dstpath  # 复制文件,filename 为本地文件全局路径,dstpath 为复制到远程主机的目标路径
scp -r dirname user@host:dstpath # 复制文件夹,dirname 为本地文件夹全局路径,dstpath 为复制到远程主机的目标路径

4.2 从远程主机拷贝文件

在本地主机终端下,使用 scp 命令:

1
2
scp user@host:filename dstpath  # 拷贝文件,filename 为远程主机文件全局路径,dstpath 为拷贝到本地主机的目标路径
scp -r user@host:dirname dstpath # 拷贝文件夹,dirname 为远程主机文件夹全局路径,dstpath 为复制到本地主机的目标路径

4.3 退出远程登录

在登录远程主机终端下使用 Ctrl + D 或者 exit