php有個ssh2的Function可以利用它來跟ssh端作連線,但是必須另外編譯 libssh 和 ssh2 這二個套件 ,本篇介紹安裝以及使用php連接ssh
準備:
libssh2 ssh2 libssh2_path 下載所需要的檔案
註: libssh2_path 編議有錯誤時會用到
安裝:
# 安裝 libssh2
1. 解壓縮後並進入該目錄
2. ./configure –prefix=/usr && make all install
註: –prefix=/usr 將libssh2安裝在 /usr下
# 安裝 ssh2
1. 解壓縮後並進入該目錄
2. ./configure –with-ssh2 –with-php-config=/usr/local/php/bin/php-config
註: –with-php-config=/usr/local/php/bin/php-config php-config 的位置
3. make
註: 如果在make 時有發生錯誤如該libssh2_path網站同樣的錯誤訊息的話,
可以下載該網站提供的path使用, 將下載下來的檔案copy到該目錄下,
並執行 patch < php-libssh2.diff 這指令 , 重新make 一次就可以make成功
4. 將編譯好的ssh2所產生的ssh2.so 檔案 copy 到你指定的 extensions 目錄下
cp modules/ssh2.so /usr/local/php/lib/php/extensions/
註: 如果尚未指定 php 的 extensions 位置 則必須先在php.ini 裡設定
/usr/local/php/lib/php/extensions/ 該目錄為我指定的php extensions 目錄
如果對 php 的 extensions 有問題的話 可以西先參考一下這篇
PHP如何手動編譯自己所需的extensions檔案
利用php連接ssh的簡單範例
| <? $_ip = ""; $_port = ""; $_user = ""; $_passord = ""; echo "Connexion SSH <br/>"; if (!@ssh2_auth_password($connection,$_user,$_passord)) { $stdout_stream = ssh2_exec($connection, "ls"); while($line=fgets($stdout_stream)){ fclose($stdout_stream); |
版主你好
我運行版本為CENTOS5.1
上述動作無法執行
請問該如何解決
你好..
上述動作無法執行是什麼意思? 不能安裝嗎? 還是不能連?
你好
是不能安裝
謝謝
是安裝 libssh2發生錯誤還是 安裝 ssh2?
不過…用php連ssh這個要小心,因為風險很高不建議使用 ^^
你好
是安裝 libssh2
風險很高? 如何說
安裝 libssh2 應該沒有啥問題…
我剛編譯過一次 沒有錯誤~
有錯誤訊息可以看嗎?
風險高的意思是…如果你用php去執行ssh的話,那麼就等於是打開一扇門出來,讓有心人可以試,光單純用ssh就有一堆有心人在try密碼了,更何況用網頁方式…
你好
checking whether to enable maintainer-specific portions of Makefiles… no
checking for sed… /bin/sed
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for gawk… gawk
checking whether make sets $(MAKE)… yes
checking libssh2 version… 0.18
checking build system type… x86_64-unknown-linux-gnu
checking host system type… x86_64-unknown-linux-gnu
configure: autobuild project… libssh2
configure: autobuild revision… 0.18
configure: autobuild hostname… moodle.fgu.edu.tw
configure: autobuild timestamp… 20081104-130306
checking host system type… (cached) x86_64-unknown-linux-gnu
checking for style of include used by make… GNU
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
嗯…你沒有裝gcc ,所以編譯會出錯
如果你有設yum的話,可以用yum方式安裝gcc
yum install gcc
你好
成功了
但[root@moodle ssh2-0.10]# ./configure –with-ssh2 –with-php-config=/usr/local/php/bin/php-config
bash: ./configure: 瘝奨?甇支?瑼鯏??緐澻??
–with-php-config=/usr/local/php/bin/php-config
你這段不能照打,因為你安裝的php位置跟我的應該是不一樣, 你必須打你的php-config所在的位置
你好
目前還沒測出
就如同我的暱稱"菜"
我會再試試
這樣會不會有點小孩玩大車
希望以後能常常請益你
不要這樣說~ "菜",每個人都菜過 只要有心學習就好囉~
我覺得你可以先去摸摸別的東西~像是怎麼編譯之類的
php apache …等等之類的
有問題歡迎問我呀~如果我知道的我回告訴你的 ^^
Thank God! Sooemne with brains speaks!
版主你好
你說用SSH危險
那有比較不危險的嗎?
謝謝
喔~不是說用ssh危險(雖然SSH本身沒有設好也會有危險),而是利用php去控制ssh這方法危險,不危險的?那就不要用 XD
比較不危險的~IP,帳號,密碼 是寫在PHP裡面,但是如果你是做對LINUX刪除或其它動作的話,別人也是只要執行該PHP就會去做動作了…
不過~你有何需求需要利用PHP去連SSH?
如果只是想要用php去執行linux指令的話,
php有個 shell_exec()這函式可以直接用,但是也是不建議使用這種方法~
你好
我想控制連到這台機器中的IP(電腦)
能夠上網與否
用shell_exec()也可控制遠端LIUNX機器??
控制連到這台機器中的IP(電腦)能夠上網與否<–這一句我不是很懂
你的意思是所有的ip(電腦)都會透過這台linux連網路?
如果是的話 你想要在linux上控制某一個ip(電腦)讓它上網與否?
假設是這樣的話你的方向完全錯囉~~這應該是要用iptables來做
你好
的確想要在linux上控制某一個ip(電腦)讓它上網與否
連上來得電腦不是固定的,她登入後須經由老師開放才能出去
因操作者是上課老師,這些老師非資訊相關科系
介面 越簡單越好
嗯…所以你一開始的方式有不對~
應該是要用iptales來做
登入的動作是什麼?
你是用dhcp讓使用者取得ip嗎?
如果是(ip)電腦不是固定的,那麼使用者換個ip就可以?
我大概想一下作法應該是
1. 先全擋住內網ip不能上網
2. 老師有一內網ip列表,然後設定哪些ip可以出去
3. 將老師所選可以出去的ip寫進iptables
4. 執行該 shell script
對了~~如果要針對電腦的話應該是鎖MAC 而不是鎖IP,
除非是你有設定MAC對應IP,這樣就只要鎖IP就好了
或者是直接擋住外出的port
像是網頁80port ..等等之類的
老師只要開或關這個port就可以讓網內的所有ip不能連了
你好
如 05 十一月 2008 11:37 上午 所述
請問要如何執行
或是目前該朝 哪一方向
方向呀~ 你先去google搜尋iptables吧,先了解什麼是iptables
你可以看一下鳥哥的網站
http://linux.vbird.org/linux_server/0250simple_firewall.php#nat
你好
應該會使用
shell_exec()
用ROOT權限 執行其他同事寫的命令
請問有參考資料嗎
謝謝
shell_exec(裡面寫shell 指令)
你用google搜尋shell_exec應該會有很多資料可以看
你好
關於shell_exec在使用上
有要做任何設定嗎?
環境是CENTOS5
THX
你好
可以執行了
只是如何接它給我的回應
http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/
可是有回应的。