Server allows NTLM authentication only

关于客户端登录验证的问题。我们在客户端上连结Telnet服务器时,经常会看到这样的错误信息:
  Server allows NTLM authentication only
  Server has closed connection

这是因为默认情况下,win2000的Telnet服务使用NTLM的验证方式,这种验证方式避免了明文密码的传送,提高了安全性。但是win98、nt4.0等系统的Telnet客户端客户端不支持这种方式,这样就带来了不便。有时我们希望在登录Telnet时,提示我们输入用户名和密码,那我们可以这样设置:

  开始菜单|程序|管理工具|Telnet服务器管理(或者运行tlntadmn),选择3 显示/更改注册表设置,然后选择7 NTLM,进行修改。可接受的值为0-2,2是NTLM only,0是NTLM not available,1是二者都支持,默认值是2。修改后需要重新启动Telnet服务。

  为了提高安全性,有时我们也在服务器端修改服务的默认端口号,这样客户机连结时就需要提供端口号信息了。修改的方法是:

  开始菜单|程序|管理工具|Telnet服务器管理,选择3 显示/更改注册表设置,然后选择8 Telnetport,输入你要设置的端口号。注意输入的端口号不要和你的服务器上正在使用的端口冲突。修改后同样需要重新启动Telnet服务。

### 通过 Java 实现 SFTP 连接服务器并执行命令 在 Java 中,可以通过 JSch 库实现 SFTP(Secure File Transfer Protocol)连接,并执行远程服务器上的 Shell 命令。SFTP 是 SSH 的一部分,提供安全的文件传输和远程命令执行功能,其默认端口为 22,且不依赖 FTP 协议,而是通过 SSH 的 `sshd` 守护进程实现连接操作[^1]。 ### 使用 JSch 连接 SFTP 并执行命令 以下是一个完整的 Java 示例代码,展示如何通过 SFTP 登录远程服务器并执行 Shell 命令。 ```java import com.jcraft.jsch.*; public class SftpShellExecutor { public static void main(String[] args) { String host = "your.remote.server.ip"; int port = 22; String user = "username"; String password = "password"; String command = "ls -la"; // 要执行的命令 JSch jsch = new JSch(); Session session = null; ChannelExec channel = null; try { session = jsch.getSession(user, host, port); session.setPassword(password); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); System.out.println("Connected to remote server via SFTP."); channel = (ChannelExec) session.openChannel("exec"); channel.setCommand(command); channel.setErrStream(System.err); java.io.InputStream in = channel.getInputStream(); channel.connect(); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { System.out.print(new String(buffer, 0, bytesRead)); } while (!channel.isClosed()) { Thread.sleep(500); } System.out.println("Exit status: " + channel.getExitStatus()); } catch (JSchException | java.io.IOException e) { e.printStackTrace(); } finally { if (channel != null) { channel.disconnect(); } if (session != null) { session.disconnect(); } System.out.println("Disconnected from remote server."); } } } ``` ### Maven 依赖(JSch) 如果使用 Maven 构建项目,需在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.55</version> </dependency> ``` ### 关键点说明 - **SFTP 登录**:使用 `jsch.getSession()` 建立会话,并通过 `session.connect()` 连接服务器。 - **命令执行**:通过打开 `exec` 类型的通道,设置 `setCommand()` 执行远程 Shell 命令。 - **输出处理**:从 `InputStream` 读取命令执行结果,并打印到控制台。 - **异常处理与断开连接**:确保在程序结束时关闭通道和会话,避免资源泄漏。 ### 注意事项 - `StrictHostKeyChecking=no` 用于跳过首次连接的主机密钥验证,适用于测试环境,在生产环境中应使用更安全的密钥验证方式。 - SFTP 本身并不提供独立的守护进程,其连接依赖于 SSH 的 `sshd` 服务[^1]。 - 登出操作可以通过 `session.disconnect()` 实现,如需要封装登出逻辑,可参考类似 `logoutViaSFTP()` 的方式[^2]。 --- ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值