我有一台 Linux 服务器(A)(使用 IP XXXX)仅接受来自另一台 Linux 服务器的 SSH(在端口 X)(乙)使用特定的 IP YYYY 显然,如果我登录服务器乙(无论从哪个 IP)我都可以 SSH 连接服务器A。
可以访问服务器A通过服务器乙使用来自任何 IP 的路由或转发?
我希望在服务器的特定端口打开 SSH 连接乙这会将流量路由到服务器A
答案1
我认为您正在寻找的是 SSH Bastion,您可以通过在 .ssh 目录中创建一个 ssh 配置文件来轻松配置它。这里有一个很好的描述:https://goteleport.com/blog/ssh-bastion-host/
类似这样的方法就可以成功(假设您想从服务器 C 连接到服务器 A,您可以在服务器 C 中创建一个配置文件):
$ cat ~/.ssh/config 主持人 XXXX 用户服务器A用户名 ProxyJump YYYY
确保服务器 B /etc/ss/sshd_config 文件根据上述链接具有正确的设置。
希望这可以帮助 :-)
答案2
解决此问题的方法之一是在服务器中使用 nginx 上游乙。
首先,确保加载nginx 流模块
load_module '/usr/lib64/nginx/modules/ngx_stream_module.so';
并添加如下代理配置:
stream {
upstream ssh {
server {server-a-ip}:22;
}
server {
listen {my-non-standard-port};
proxy_pass ssh;
}
}
然后你就可以连接到服务器A:
ssh username@{server-b-ip} -p {my-non-standard-port}
当然,最好只允许你的公共 IP 访问服务器乙在端口 {my-non-standard-port}