創建一個小型圖書館通過SFTP發送和接收文件使用ssh2_sftp後方法,我發現,我有服務器連接到具有ssh連接禁用我只能通過SFTP連接。SFTP連接(不通過SSH)
服務器連接使用sftp命令在命令行下工作良好,但ssh發送給我一個「此服務只允許sftp連接。」
因此,因爲ssh2_sftp需要一個先前的ssh連接才能工作,我不知道要使用SFTP身份驗證連接到SFTP服務器的庫或如何執行操作。
phpseclib是否使用與ssh2_ftp不同的身份驗證方法?
任何想法?謝謝。
創建一個小型圖書館通過SFTP發送和接收文件使用ssh2_sftp後方法,我發現,我有服務器連接到具有ssh連接禁用我只能通過SFTP連接。SFTP連接(不通過SSH)
服務器連接使用sftp命令在命令行下工作良好,但ssh發送給我一個「此服務只允許sftp連接。」
因此,因爲ssh2_sftp需要一個先前的ssh連接才能工作,我不知道要使用SFTP身份驗證連接到SFTP服務器的庫或如何執行操作。
phpseclib是否使用與ssh2_ftp不同的身份驗證方法?
任何想法?謝謝。
99%只是提示輸入密碼。 phpseclib, a pure PHP SFTP implementation,如果密碼驗證失敗,則嘗試通過鍵盤交互提交密碼。如何使用它的示例:
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
// outputs the contents of filename.remote to the screen
echo $sftp->get('filename.remote');
?>
是的,你完全正確@arkascha ...經過一些研究,我找到了原因。
當我測試我的代碼對我自己的服務器,它的工作,並對其他服務器失敗,所以我認爲這是因爲ssh外殼連接被禁用。
要求兩臺服務器的允許AUTH方法(使用ssh2_auth_none)後,我得到了什麼是錯的:
我的服務器:
[0] =>公鑰
[1 ] =>密碼
其他服務器(發生故障的那臺服務器):
[0] =>公鑰
[1] => GSSAPI-keyex
[2] => GSSAPI與 - 麥克風
[3] =>鍵盤互動
因爲它不允許密碼,所以它是失敗的。就是這樣......
我讓你們浪費你的時間道歉......非常感謝鍵盤交互認證的
您是否曾嘗試過使用'ssh2_ftp()'?從這個問題是不是完全清楚它是否是一個假設:) afaik'ssh2_connect()'建立一個連接而不選擇任何特定的服務,例如shell或sftp –
「以前的SSH連接」是一個錯誤的術語。 SSH協議包括* shell *訪問(在您的情況下禁用),SFTP子系統,端口轉發等。在絕大多數情況下,SFTP不需要shell訪問(當SFTP本身沒有正確配置時,它可能需要shell,而您並不適用)。 –
@ EugeneMayevski'EldoSCorp它是正確的,因爲sftp需要事先連接才能工作:) –