3

我需要使用用户在我的网络表单中输入的用户名 ssh 到服务器。

如何才能做到这一点?

4

5 回答 5

5

如果您的意思是“如何通过 SSH 从我的网站连接(到另一台服务器)”,那么您可以使用 PECL ssh2 库来执行此操作。

见: http: //pecl.php.net/package/ssh2

演练(未经测试): http: //kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/

于 2012-09-20T05:59:02.930 回答
3

起初,没有 PuTTy 命令。这些是 shell 命令。

要在 shell 中运行 PHP 脚本,您需要使用 php-cli:

于 2012-09-20T06:00:10.340 回答
0

也许你可以在 PHP 中使用命令行脚本,这取决于你想要什么。http://php.net/manual/en/features.commandline.php

于 2012-09-20T05:54:36.970 回答
0

我不确定,但我认为(如果我错了,请纠正我)您想单击网页上某个链接上的某个位置并打开 putty(在用户计算机上)以连接到服务器。

您可以将 Putty 配置为处理ssh://链接。怎么做你可以在这里找到。

配置完成后,您所要做的就是拥有一个类似于此的链接:

<a href="ssh://user@remoteServer">Click here to connect</a>

请记住,这仅适用于配置为处理 ssh:// 链接类型的系统

我希望这能回答你的问题。

于 2012-09-20T06:27:26.970 回答
0

这就是您通过 PHP 使用 putty 的方式(不依赖于 cli)。请注意,密码不受保护,交互式 ssh 会话将涉及更多。但是,HTTPS 和 mcrypt(如果需要存储密码和/或 bash 脚本)可以使其成为一个安全的解决方案。

<?php
// EDIT: added escapeshellcmd() to following vars
$user = escapeshellcmd($_POST['user']);  // username
$host = escapeshellcmd($_POST['host']);  // domain
$pass = escapeshellcmd($_POST['pass']);  // password

// create a string that will be loaded into a bash file for putty
// String can easily be made dynamically.
$bash_sh = <<<EOF                   #START OF BASH
\#!/bin/bash    
echo "BASH ON SSHD SIDE"
for (( i=1; i<=5; i++ ))            # BASH FOR LOOP
do
   echo "echo \$i times in bash"    #\$i is BASH not PHP, so have to escape
done
EOF;                                #END OF BASH

// creates a temp file called 'bash.sh' using the bash script above
file_put_contents("bash.sh", $bash_sh);

// executes putty using the args -ssh, -pw, -t, -m
// -ssh tells putty to use ssh protocol
// -pw tells putty to enter the password automaticaly
// -t tells putty to use a psudo terminal.
// -m tells putty read and execute bash.sh once logged in
exec("putty.exe -ssh ".$user."@".$host." -pw ".$pass." -t -m bash.sh");

// delete bash file since it has been sent
unlink('bash.sh');

?>
于 2012-12-10T16:23:38.823 回答