抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

记录 SSH 一些使用方法

记录如何使用 SSH RSA 私钥登录服务器,包括 Windows、Linux 客户端操作以及 Linux 服务端操作。

Client 端

Windows

  • 安装 OpenSSH ClientOpenSSH Server

  • Powershell(管理员)中输入:

    1
    Start-Service sshd
  • 命令行中输入:

    1
    ssh Frank@localhost

    测试连接成功,但需要输入密码。

  • 通过 RSA 私钥登录:

    1
    ssh-keygen -t rsa

    ~/.ssh 目录下得到 id_rsa.pub 公钥和 id_rsa 私钥。

  • id_rsa.pub 中的内容复制到 Server 端的 ~/.ssh/authorized_keys 文件中。提供一个可行的方法:

    1
    2
    3
    4
    5
    # 1. 直接通过 SSH 连接 Server 端
    ssh <user>@<hostname>

    # 2. echo 的方式加入到 ~/.ssh/authorized_keys 文件中
    echo <content_of_id_rsa_pub> >> ~/.ssh/authorized_keys
  • .ssh/ 目录下新建文本文件 config,内容如下:

    1
    2
    3
    4
    5
    Host <host>
    HostName <hostname> # ip address or domain
    User <user>
    PreferredAuthentications publickey
    IdentityFile <.ssh/id_rsa>
  • 验证连接:

    1
    ssh <host>

    当所有操作正确完成后,连接成功。

Linux

  • 所有操作与 Windows 几乎相同,在复制 id_rsa.pub 公钥的时候,还可以通过以下方式:

    1
    ssh-copy-id -i <~/.ssh/id_rsa.pub> <user>@<hostname>

Server 端

要注意的是 .ssh/ 目录下的文件权限,通过 chmod 命令修改。

  • 安装 openSSH

    1
    sudo apt install openssh-server

    启动:

    1
    /etc/init.d/ssh start
  • 使用 vim 打开 /etc/ssh/sshd_config,添加以下内容:

    1
    2
    3
    AuthorizedKeysFile .ssh/authorized_keys 

    PubkeyAuthentication yes
  • 通过 ssh-keygen 工具生成 .ssh 目录。

  • 如果 .ssh 目录下没有 authorized_keys 文件,创建一个:

    1
    touch ~/.ssh/authorized_keys
  • 服务器自己的公钥远程登录机器对应的公钥 复制到 authorized_keys 文件中:

    1
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 修改目录权限:

    1
    2
    3
    4
    5
    6
    7
    # ~: 750 
    # ~/.ssh: 700
    # ~/.ssh/*: 600
    # ~/.ssh/config: 700

    chmod 700 ~/.ssh
    chmod 600 .ssh/authorized_keys
  • 理论上可以运行成功。


管理会话 —— screen

管理会话,SSH 时断开连接也不中断正在运行的进程,重新连接 SSH 后可以恢复。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 安装 screen
sudo apt install screen

# 新建 screen
screen -S <name>

# 进入 screen
screen -r <name>

# 退出当前 screen
# 在当前 screen 下
Ctrl+A,Ctrl+D

# 显示 screen list
​​​​​​​screen -ls

# 删除指定 screen
# 在当前 screen 下
Ctrl+D
# 不在当前 screen 下
​​​​​​​screen -S <name> -X quit