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:1096
的socks5
代理中转到远程 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
使用密钥方式登录的控制项。如果你通过密钥无法免密登录时,请检查服务端的配置。