根据端口使用不同的 ssh 配置选项

Chr*_*ris 3 ssh networking

我有一种情况,我必须根据我使用的端口在同一 IP 地址上使用不同的登录凭据。

因此,命令行上的示例如下所示:

ssh user1@192.168.1.2:22
Run Code Online (Sandbox Code Playgroud)

ssh user2@192.168.1.2:2222
Run Code Online (Sandbox Code Playgroud)

我在 ~/.ssh/config 文件中设置了以下内容:

 Host "192.168.1.*"
   user user1
   IdentityFile ~/.ssh/id_user1
   PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)

这对于端口 22 场景中的 user1 非常有用,但是有没有办法在端口 2222 上为 user2 设置备用用户和 IdetityFile?

muc*_*lux 6

我没有尝试过,但我认为 HostName 选项(请参阅man ssh_config可以为您提供解决方案:

 Host "host22"
   Hostname "192.168.1.2"
   Port 22
   user user1
   IdentityFile ~/.ssh/id_user1
   PubkeyAuthentication yes
 Host "host2222"
   Hostname "192.168.1.2"
   Port 2222
   user user2
   IdentityFile ~/.ssh/id_user2
   PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)

有了这个你应该能够做到:

ssh user1@host22
ssh user2@host2222
Run Code Online (Sandbox Code Playgroud)

甚至

ssh host22
ssh host2222
Run Code Online (Sandbox Code Playgroud)

因为用户名和端口在配置文件中给出。


Chr*_*ris 5

我想我应该继续寻找......

superuser.com 上的SSH 配置主机匹配端口有我需要的答案!

基本上代替:

Host "192.168.1.*"
Run Code Online (Sandbox Code Playgroud)

我现在正在使用:

Match host "192.168.1.*" exec "test %p = 22"
Run Code Online (Sandbox Code Playgroud)

Match host "192.168.1.*" exec "test %p = 2222"
Run Code Online (Sandbox Code Playgroud)