簡體   English   中英

PHPSECLIB 和 SSH2

[英]PHPSECLIB and SSH2

我一直在尋找如何使用php建立與遠程服務器的連接並執行命令的解決方案。 研究使我注意到了兩種解決方案; phpseclibssh2 我會盡量不讓我的問題變成比較帖子。 據我所知,它們都是廣泛使用的解決方案。 ssh2是 php 擴展,而phpseclib是純 php 庫。 看來您也可以將phpseclibssh2結合使用。 我更願意避免需要安裝擴展,所以我更傾向於使用phpseclib 不過我確實有些擔心。

ssh2php的直接文檔,這是否意味着它是一個更好的解決方案?

我看到的大多數關於phpseclib的帖子都有好幾年了,這仍然是一個“現代”的解決方案嗎?

phpseclib在此處找到)表示它是為與php 4兼容而構建的,其中2.0面向php 5 對於那些使用php 7的人來說,這是一個可以接受的解決方案嗎?

這是使用RSA keyphpseclib 2.0建立ssh連接的示例

require __DIR__ . '/vendor/autoload.php';

use phpseclib\Net\SSH2;
use phpseclib\Crypt\RSA;

$ssh = new SSH2('www.domain.tld');
$key = new RSA();
$key->loadKey(file_get_contents('privatekey'));
if (!$ssh->login('username', $key)) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');

我對ssh還是很陌生,但如果我正確理解上述內容,只要遠程服務器有一個.pub密鑰,我就可以簡單地提供我的本地私鑰(和用戶)的連接,我應該能夠連接嗎? 公鑰是否需要在某個特定的地方?

phpseclib 1.0 理論上適用於 PHP 4.4,但 phpseclib 2.0 需要 PHP 5.3+。 3.0 需要 5.6+。 從 Travis CI 測試結果可以看出,所有版本的 phpseclib 一直工作到 PHP 7.4:

https://travis-ci.org/github/phpseclib/phpseclib

(舊版本的 PHP 沒有經過單元測試,因為 Travis CI 不支持它們;可以使用 Docker 容器,但是是的)

我對ssh還是很陌生,但如果我正確理解上述內容,只要遠程服務器有一個.pub密鑰,我就可以簡單地提供我的本地私鑰(和用戶)的連接,我應該能夠連接嗎? 公鑰是否需要在某個特定的地方?

使用 OpenSSH 服務器,公鑰需要保存在 ~/.ssh/authorized_keys 中。 在客戶端,您真正需要的只是私鑰。 公鑰可以從私鑰中提取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM