配置文件~/.ssh/config和/etc/ssh/ssh_config

本文详细介绍了SSH客户端配置文件~/.ssh/config及/etc/ssh/ssh_config的使用方法,包括如何通过Host关键字实现特定主机的配置、如何设置X11转发、HostKeyAlgorithms等参数,以及如何确保配置文件的安全。

14. 01.

一般不需要修改OpenSSH客户端配置文件。对于给定用户,共有两个配置文件,分别是~/.ssh/config(用户专用)和/etc/ssh/ssh_config(全局共享)。要按照该顺序读取这些文件,对于给定的某个参数,它使用的是读取过程中发现的第一个配置。用户可以通过以下方式将全局参数设置覆盖掉:在自己的配置文件中设置同样的参数。在ssh或scp命令行上给出的参数的优先级要高于这两个文件中所设置的参数的优先级。

用户的~/.ssh/config文件必须由该用户所有(他是目录”~/”的所有者),并且除了所有者之外任何人都不能写入该文件。否则客户端就会给出一条错误消息然后退出。这个文件的模式通常被设为600,这是因为除了它的所有者之外任何人都没有理由能够去读取它。

这些配置文件中的配置行包含着声明,这些声明均以某个关键字(不区分大小写)开头,后面是空白,最后是参数(区分大小写)。

可以使用关键字Host来使声明只作用于特定的系统。Host声明作用于它与下一个Host声明之间的所有配置行。在主机名中,可以使用通配符*和?。

Host hostnames

将下面的声明(

直到下一条Host声明)都指定为只适用于hostnames。hostnames采用的格式应该与在命令行上所用的格式一样,而且也能够包含通配符*和?。单个*指定所有主机。

CheckHostIP yes|no

如果将其设置为yes(默认值),那么除了主机名之外,还可以采用IP地址来识别known_hosts文件中的某个系统。若设置为no,则只能使用主机名。

ForwardX11 yes|no

如果设置为yes,则自动通过一条安全通道以不可信模式来转发X11连接,并设置shell变量DISPLAY。也可以在命令行上使用选项”-X”以不可信模式重定向X11连接。这个参数的默认值是no。要想让X11转发起作用,还必须将服务器上的/etc/sshd_config文件中的X11Forwarding设置为yes。更多信息请参见1.6节的”X11转发”部分。

ForwardX11Trusted yes | no

如果设置为yes,那么自动通过一条安

全通道以可信模式来转发X11连接,并设置shell变量DISPLAY。也可以在命令行上使用选项”-Y”以不可信模式重定向X11连接。这个参数的默认值是no,但是Red Hat Linux将其设置为yes。要想让X11转发起作用,还必须将服务器上的/etc/sshd_config文件中的X11Forwarding设置为yes。更多信息请参见1.6节的”X11转发”部分。

HostbasedAuthentication yes | no

若设置为yes,则尝试着进行rhosts身份验证。对于安全要求更高的系统,请将其设置为no(默认值)。

HostKeyAlgorithms algorithms

其中algorithms是一个由逗号隔开的算法列表,客户端按照优先级顺序依次使用这些算法。从ssh-rsa或ssh-dss中选择算法(默认值为”ssh-rsa, ssh-dss”)。

TCPKeepAlive yes | no

如果设置为yes(默认值),就定期检查连接是否存活。如果服务器崩溃或者由于其他原因导致连接死掉,那么这种检查将会导致ssh或scp连接中断,即便只是暂时的。若将这个参数设置为no,则会导致客户端不去检查连接是否存活。

这项声明用到了TCP keepalive选项,它不可加密,并且容易受到IP欺骗(IP Spoofing)。如果希望采用能够防止IP欺骗的替代选项,可以采用基于服务器的相关技术,请参见1.4.6节的”ClientAliveInterval”部分。

StrictHostKeyChecking yes | no | ask

决定OpenSSH是否将主机密钥添加到用户的known_hosts文件中以及如何添加。如果设置为ask(默认值),那么在连接新系统时会询问是否添加主机密钥;如果设置为no,就会自动添加主机密钥;如果设置为yes,就要求手工添加主机密钥。若将参数设置yes或ask,则当某系统的主机密钥发生改变之后,OpenSSH会拒绝连接到该系统。对于安全性要求较高的系统,请将此参数设置为yes或ask。

User name

指定登录系统时所用的用户名。用Host声明来指定系统。该选项意味着,在远程系统上登录时,如果使用的用户名不同于在本地系统上登录所用的用户名,那么不必在命令行上输入用户名。、

很有用的两个参数,可以解决多个系统共享单个IP时的登陆冲突,不用每次去修改或者删除known_hosts文件了:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

在 **MobaXterm** 中配置 `~/.ssh/id_ed25519` 密钥的完整步骤如下: --- ### **步骤 1:生成 ed25519 密钥(如果尚未生成)** 在 MobaXterm 的本地终端中运行: ```bash ssh-keygen -t ed25519 -C "your_email@example.com" # -C 是注释,可省略 ``` - 默认会生成: - 私钥:`~/.ssh/id_ed25519`(无后缀) - 公钥:`~/.ssh/id_ed25519.pub` - 生成时可直接按回车使用默认路径,或自定义路径。 --- ### **步骤 2:将公钥上传到目标服务器** #### 方法 1:使用 `ssh-copy-id`(推荐) ```bash ssh-copy-id -i ~/.ssh/id_ed25519.pub username@服务器IP ``` - 输入服务器密码后,公钥会自动追加到 `~/.ssh/authorized_keys`。 #### 方法 2:手动复制(若无 `ssh-copy-id`) 1. 在 MobaXterm 中查看公钥内容: ```bash cat ~/.ssh/id_ed25519.pub ``` 2. 登录服务器,将公钥粘贴到 `~/.ssh/authorized_keys`: ```bash mkdir -p ~/.ssh echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` --- ### **步骤 3:在 MobaXterm 中配置私钥** #### 方法 1:通过会话设置直接指定私钥 1. 打开 MobaXterm,点击 **Session > New Session > SSH**。 2. 填写: - **Remote host**: 服务器IP或域名 - **Specify username**: 用户名 3. 在 **Advanced SSH settings** 标签页: - 勾选 **Use private key**,点击右侧文件夹图标,选择 `id_ed25519` 文件(无后缀的私钥)。 4. 保存会话,双击连接。 #### 方法 2:通过 Pageant(SSH 认证代理)加载 1. 打开 MobaXterm 的 **Tools > MobaKeyGen**。 2. 点击 **Load**,选择 `id_ed25519` 私钥文件。 3. 启动 **Pageant**(自动加载私钥),之后新建 SSH 会话时会自动使用该密钥。 --- ### **步骤 4:验证连接** ```bash ssh -i ~/.ssh/id_ed25519 username@服务器IP ``` - 如果配置正确,无需输入密码即可登录。 --- ### **常见问题排查** 1. **权限错误**: - 确保私钥权限为 `600`: ```bash chmod 600 ~/.ssh/id_ed25519 ``` - 确保 `~/.ssh` 目录权限为 `700`: ```bash chmod 700 ~/.ssh ``` 2. **服务器拒绝密钥**: - 检查服务器 `/etc/ssh/sshd_config` 是否包含: ```ini PubkeyAuthentication yes ``` - 重启 SSH 服务: ```bash sudo systemctl restart sshd ``` 3. **MobaXterm 未识别密钥**: - 确认私钥路径在 MobaXterm 会话中配置正确(注意 Windows 路径与 Linux 路径差异)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值