目前,每当人们 Telnet 到我的服务器(或 SSH)时,系统都会提示他们输入用户名/密码。
之后我对该特定用户进行自己的身份验证,因此这是多余的。用户自动启动特定的 bash 脚本而不是 bash shell。
我遇到过一些系统,如果您在不指定用户的情况下通过 telnet 或 SSH 访问它们,它将自动登录并连接到服务或脚本。然而,我不知道如何更改我的配置,所以我可以这样做。大多数答案都与自动将密码传递到远程连接有关。
是否可以在 Debain 中配置 SSH/Telnet,以便在未指定用户名的情况下,脚本默认使用此用户名,并且也不会提示输入密码? (基本上立即连接而不提示任何内容)。
我仍然应该能够手动指定用户名,例如root@server
- 否则我自己将无法进入!
这是我正在寻找的示例:
当您通过 SSH 连接到 时[email protected]
,您会立即绕过登录屏幕并直接进入 BBS 程序。
这里有一个偶数更好的某事的例子确切地我在找什么:ssh sshtron.zachlatta.com
这是确切地我想要什么。拥有用户名是一回事,但要么应该绕过密码,要么密码应该为空并自动继续。
我尝试修改pam
并sshd_config
刚刚允许这样做,但旧密码和空密码都不起作用。
答案1
使用 SSH,用户名实际上作为协议中连接信息的一部分传递,您的 SSH 服务器不会Username:
发出提示,如果您看到提示,也是由您的 SSH 客户端提示的。
(这在 Windows 等平台上很常见,您不太可能在本地找到类似 Linux/Unix 的用户名,因此如果未配置,PuTTY 等客户端将提示输入用户名。)
所以,简而言之,你总是需要为 SSH 配置一个用户名。
您可以通过为该特定帐户设置空白密码(即无密码)来绕过密码提示。如果这样做,SSH in 会将您直接带入用户配置的 shell。 SSH 或 PAM 可能被配置为阻止无密码访问,但应该可以重新配置它们以允许这种情况(具体信息请参阅/etc/ssh/sshd_config
和/etc/pam.d/ssh
或类似内容。)sshd
请注意,这是一个糟糕的主意。没有某种形式的身份验证的 SSH 可能是一个糟糕的主意,特别是如果您正在考虑将其暴露在狂野的 Internet 上,因此在决定这样做之前请三思而后行。
关于Telnet,Telnet 协议非常简单,在很多情况下可以被忽略。您可能只编写一个从 stdin 读取并写入 stdout 的会话程序,并使用最少的钩子,例如tcpd
或某种形式的nc
或系统套接字单元和Accept=yes
一个多实例服务(名称以 结尾@
)在 TCP 端口上公开该服务,并用于telnet
连接到它。您将直接进入您的程序,因此不会代表您执行身份验证或用户名交换。请注意,Telnet 是一种未加密的协议,同一网络或网络路径中的其他人可以看到交换的完整信息,因此,如果您打算交换敏感信息(可能包括密码,因为您提到您是计划在您自己的应用程序中进行身份验证),那么您可能应该完全避免 Telnet。