ubuntu12.04中OpenSSH守護進程sshd關閉和啓動的方法

一、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           #查詢服務狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章