一、OpenSSH簡介
OpenSSH是安全Shell協議族(SSH)的一個免費版本。SSH協議族可以用來進行遠程控件, 或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議), rcp(注2)都是極爲不安全的,並且會使用明文傳送密碼。OpenSSH提供了服務端後臺程序和客戶端工具,用來加密遠程控件和文件傳輸過程的中的數 據,並由此來代替原來的類似服務。
OpenSSH服務,sshd,是一個典型的獨立守護進程(standalone daemon),但也可以根據需要通過網絡守護進程(Internet Daemon)-inetd(注3)或Ineternet Daemon's more modern-xinted(注4)加載。OpenSSH服務可以通過/etc/ssh/sshd_config文件進行配置。
二、問題解決經過
本來在研究反病毒系統,用到了兩臺主機之間的文件傳送技術,考慮到安全性,選擇使用OpenSSH,
1、在ubuntu12.04下安裝了OpenSSH:
sudo apt-get install openssh-server
2、啓動服務:
sudo /etc/init.d/ssh start #(一般守護進程腳本文件都會在“/etc/init.d/”路徑下)
然後查看服務是否已經啓動:
ps -e|grep ssh #(ps -e:該命令是查詢當前進程服務列表,並同時顯示進程標識PID)
這個時候會看到下面兩行:
2121 ? 00:00:00 ssh-agent <defunct>
6421 ? 00:00:00 sshd
但是,後面問題出現了,我可能是重複運行了啓動服務的操作,在後來查看進程列表的時候發現sshd進程有兩個,而且運行:
sudo service ssh stop
也沒有能夠結束守護進程,用ps查看時還是兩個sshd,於是google一下,大家都在說用了上邊這個stop命令之後就可以結束進程了,但是我這裏就偏偏沒有結束,於是各種搜索,各種嘗試,中間還有幾次出現了三個sshd進程,我那個鬱悶啊。還有的說用下面這樣操作可以解決:
sudo service ssh stop
sudo /etc/init.d/ssh restart
很可惜,運行結束命令之後重啓,仍未能解決
後來還嘗試了/etc/init.d/ssh stop還有kill <pid>等方法都未能湊效
。。。。。
一天過去了,我突然想到自己疏忽了一個重要細節當我用kill殺死進程的時候提示我“沒有那個進程”,後來才知道(初學者,對kill命令使用方法不熟)使用kill時候還需要家sudo,於是:
用ps -e 查看當前進程,找到sshd進程的PID,然後:
sudo kill <PID>
成功殺死進程(兩個sshd都被殺死):
這個時候查詢當前有關ssh進程:
ps -e|grep ssh
發現sshd已經沒有了。
如果需要再啓動ssh服務,就使用命令:
sudo service ssh start
此時查詢服務:
ps -e|grep ssh
出現:
yijiedao@ubuntu:~$ ps -e|grep ssh
2121 ? 00:00:00 ssh-agent <defunct>
6421 ? 00:00:00 sshd
正常運行,一切OK!
需要關閉服務時:
sudo service ssh stop
yijiedao@ubuntu:~$ sudo service ssh stop
ssh stop/waiting
yijiedao@ubuntu:~$ ps -e|grep ssh
2121 ? 00:00:00 ssh-agent <defunct>
這個時候遠程主機就無法與本地主機建立連接了。
手動操作開啓/關閉ssh服務相關命令:
sudo service ssh start #手動啓動服務
sudo service ssh stop #手動關閉服務
sudo service ssh status #查詢服務狀態