0

我已经通过批处理文件实现了自动化以登录到远程服务器并在其中运行一系列命令。我的批处理文件内容如下:

@ECHO OFF
ECHO 1 -^> Connect 2 Server
ECHO 2 -^> Quit
SET /p ID=Enter Choice : 

IF "%ID%"=="1" start "" C:\work\putty.exe -load SessionName -l UserName -pw Password -m cmd.txt
IF "%ID%"=="2" exit

我的 cmd.txt 文件包含以下命令:

su superuser
password
ssh server
password
su MyID
password

批处理成功连接服务器;但它无法保留会话。任何调整将不胜感激。

4

1 回答 1

0

为了我自己的使用,我验证了 -m 开关对腻子的作用

-m 选项执行与 PuTTY 配置框的 SSH 面板中的“远程命令”框类似的功能(请参阅第 4.18.1 节)。然而,-m 选项期望被赋予一个本地文件名,并且它将从该文件中读取一个命令。

对于某些服务器(尤其是 Unix 系统),您甚至可以在该文件中放置多行并依次执行多个命令或整个 shell 脚本;但这可以说是一种滥用,并且不能期望在所有服务器上都有效。特别是,众所周知,它不能与某些“嵌入式”服务器一起使用,例如 Cisco 路由器。

和我猜的差不多。我认为正在发生的事情是您的命令可能运行正常,但它在完成后终止会话(这也是 ssh [command] 在 unix 上的默认行为。为了解决这个问题,您可以尝试在末尾运行 'bash' 开始作为该用户的终端,它应该一直运行直到您退出。如果这不起作用,您可以尝试运行“sleep 10”以查看会话是否保持运行更长时间 - 应该验证这是我们正在处理的问题。

就像stackoverflow严格要求问题的答案一样,我希望我已经在上面提供了。我觉得在这种情况下,不指出我对你正在做的事情的严重安全问题是失职的。我认为您不应该回答有关安全地做某事(涉及 ssh 和 root 密码)的问题,而不涉及潜在的安全隐患。

你在做什么似乎是个坏主意,因为:

  • 它为找到该文件的任何人制作一个带有两个未加密的具有root权限的密码的文件
  • 默认情况下,此脚本还为提供root 访问权限,这不是一种安全的操作方式。曾经不小心在错误的窗口中输入 rm -r 吗?
  • 此外,有人弄乱了您的第二个跃点(例如,将 ssh 服务器替换为运行 ssh 但记录密码的脚本)将以 root 权限获得第三个跃点的密码。
  • SSH 密钥应该取消使用密码登录。使用它们。
  • SSH 端口转发还可以让您从第二个跃点跳过 sshing - 而只是通过它隧道(我猜第三个框无法访问 Internet),再次使用 ssh 密钥可以让您跳过密码。
  • 除非您的权限不允许您使用 ssh(该框上是否存在 ssh_allow 组?),否则第一个“su 超级用户”不是必需的,这可能是您实际应该解决的问题 - 不是允许的组的成员使用 SSH。
于 2013-09-04T04:50:20.933 回答