跳到主要内容
  1. Skills/
  2. 系统运维、优化/

ssh常用配置

··字数 927·2 分钟
ssh howto

平时使用 ssh 只是用于远程安全连接,只用到非常少的功能。ssh 的 config 功能非常强大,可以通过配置来激发ssh的大量功能。

本文介绍几个本站长较为常用的配置。

使用别名方便登录 #

➜ ssh 用户@远程服务器IP -p ssh端口
# 若已配置.ssh/config
➜ ssh config中使用的别名
  • 登录时,本地.ssh/known_hosts文件中将会记录远程的指纹,当远程服务器重新安装或指纹改变时,会提示与本地不符,删掉到本地该文件中对应的记录重新连接。
  • 关于.ssh/config的配置说明,见下一节。

配置本地config别名 #

完整的 ssh config 在 https://www.ssh.com/academy/ssh/config

ssh 工具提示了大量的选项用于命令执行,也被称为参数魔法,在macos app store 上甚至有一个收费工具 ssh config editor。通过config来配置常用参数项,可以使得 ssh 命令变得非常简短。这个文件默认为~/.ssh/config。下面以 ssh 连接为例说明。

创建.ssh/config文本文件,写入:

Host 一个别名
    User root
    HostName 111.111.111.111
    Port 29941
    ...
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand nc -X 5 -x 127.0.0.1:1096 %h %p
别名
用于在命令行指定配置的名称
User
登录的用户
HostName
远程服务器IP
IdentityFile
密钥文件
ProxyCommand
当无法直接连接时使用的代理,具体参见ssh ProxyCommand的使用。-X 5 -x 127.0.0.1:1096 %h %p表示通过 nc 转发工具使用127.0.0.1:1096socks5代理中转到远程 ssh 服务。

而后,使用命令即可直接登录(前提是已经将公钥上传到远程sshd服务器)

➜ ssh config中配置的名称

若无config 配置,实现对通过代理的免密登录的命令大概为

➜ ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:1096 %h %p ' root@111.111.111.111 -p 29941
# 根据提示输入密码

修改sshd服务端参数 #

修改 sshd 服务端,可用于控制客户端连接,比如端口、超时等。修改服务器配置后,需重启服务,重启时原有的客户端连接会被断开。

# sshd服务配置文件
➜ vi /etc/ssh/sshd_config
➜ ...
➜ service ssh restart

端口 #

找到 Port 位置修改端口号,默认为22,后重启。

禁密码登录 #

  • 禁用密码验证
# 修改 /etc/ssh/sshd_config
# 禁用普通用户使用密码的方式登录
PasswordAuthentication no
# root用户可以密码登录
PermitRootLogin yes

通常,为了获取更高的安全保障,不建议在客户端直接使用 root 用户登录。而是创建一个普通用户,通过终端登录系统后,对需要 root 操作权限时,再切换到 root 用户。

  • 启用密钥验证
# 修改 /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes

使用密钥方式登录的控制项。如果你通过密钥无法免密登录时,请检查服务端的配置。