[英]PHPSECLIB and SSH2
我一直在尋找如何使用php
建立與遠程服務器的連接並執行命令的解決方案。 研究使我注意到了兩種解決方案; phpseclib
和ssh2
。 我會盡量不讓我的問題變成比較帖子。 據我所知,它們都是廣泛使用的解決方案。 ssh2
是 php 擴展,而phpseclib
是純 php 庫。 看來您也可以將phpseclib
與ssh2
結合使用。 我更願意避免需要安裝擴展,所以我更傾向於使用phpseclib
。 不過我確實有些擔心。
ssh2
有php
的直接文檔,這是否意味着它是一個更好的解決方案?
我看到的大多數關於phpseclib
的帖子都有好幾年了,這仍然是一個“現代”的解決方案嗎?
phpseclib
(在此處找到)表示它是為與php 4
兼容而構建的,其中2.0
面向php 5
。 對於那些使用php 7
的人來說,這是一個可以接受的解決方案嗎?
這是使用RSA key
與phpseclib 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.