有没有一种简单的方法可以让我的路由器将某些用户名的 ssh 登录转发到内部网络上的其他服务器?
例如,ssh router@url 将使我作为路由器上的路由器登录,而 ssh steve@url 将使我作为服务器上的 steve 登录。
另外,这需要是一个服务器端解决方案,因为我希望它简单易用。
答案1
我从来没有见过像你所要求的那样的东西,但如果我正确理解你的问题,你想要做克里斯·唐在评论中所说的事情。不同的主机使用不同的端口,例如,服务器使用端口 22,路由器使用端口 222。然后,您可以在服务器上像这样登录:ssh steve@url
,在路由器上像这样登录:ssh -p 222 router@url
。
OpenSSH 客户端有一个配置文件,允许您定义别名。如果您经常通过 SSH 来回连接,这些会很方便。以下是两个最小的示例(请记住将“url”替换为您的真实网址):
# ~/.ssh/config
Host server
User steve
HostName url
Port 22
Host router
User router
HostName url
Port 222
您现在可以使用 SSH 连接到您的服务器ssh server
并使用 SSH 连接到您的路由器ssh router
。
如果您仍然坚持仅在一个端口上进行此操作,我建议您只需通过 SSH 登录到您的服务器,然后通过 SSH 从服务器登录到路由器(或反之亦然)。或者,您可以创建一个名为的用户路由器在您的服务器上并创建一个自动登录到路由器的登录脚本。根据您的登录 shell(以及您的软件的其余部分,您没有提到您的系统),您可以执行以下操作:
# Create a new user on the server
useradd -m router -p MyPassWordABC123
# Log in as the new user
su router
# Generate a new SSH key
ssh-keygen -t rsa -C "router@server" # You can safely accept the defaults.
# Add your key to authorized keys on the router to be able to log in without password
ssh-copy-id [email protected]
# Try logging into the router to verify this works
# Add a startup command to your .profile (depends on your shell, .profile works for at least bash)
echo "ssh [email protected]" >> ~/.profile
我应该提到(在我看来)这是这个问题的一个丑陋的解决方案。