2012-09-20 134 views
3

我需要使用用戶名在我的webform上輸入的用戶名ssh到服務器。來自php的ssh連接

這怎麼辦?

+0

爲什麼你認爲你需要打開膩子? – sberry

+0

當我點擊一個鏈接時,我需要使用提供的用戶名ssh到服務器。 –

+0

那你會怎麼做?你期望它是互動的嗎? – sberry

回答

3

起初,沒有膩子命令。這些是shell命令。

要在shell中運行PHP腳本,你需要使用PHP-CLI:

0

我不知道,但我認爲(糾正我,如果我錯了),你想不想找個點擊網頁上的鏈接並打開putty(在用戶的計算機上)連接到服務器。

您可以配置膩子以處理ssh://鏈接。如何做到這一點,你可以找到here

時配置所有你需要做的是有一個類似的鏈接:

<a href="ssh://[email protected]">Click here to connect</a> 

有想法,這將工作僅在配置處理系統的ssh://鏈接類型

我希望這可以回答你的問題。

+0

感謝您的回覆。我現在會檢查它。 –

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'); 

?> 
+0

還注意到您需要使用escapeshellcmd()來防止命令行注入。 – JSON