ssh常用用法小結

ssh常用用法小結

在我們日常的工作中,經常涉及到維護服務器,那么為了方便操作,以及安全方面的考慮,通常我們都會在服務器上安裝ssh服務端,這樣,在我們自己的機器上通過ssh客戶端工具連接到服務器,既方便又安全。下面說說ssh應用的基本功能。

www.2cto.com

1、連接到遠程主機:

命令格式 :

ssh name@remoteserver 或者

ssh remoteserver -l name

說明:以上兩種方式都可以遠程登錄到遠程主機,server代表遠程主機,name為登錄遠程主機的用戶名。

2、連接到遠程主機指定的端口:

命令格式:

ssh name@remoteserver -p 2222 或者

ssh remoteserver -l name –p 2222

說明:p 參數指定端口號,通常在路由里做端口映射時,我們不會把22端口直接映射出去,而是轉換成其他端口號,這時就需要使用-p 端口號命令格式。

3、通過遠程主機1跳到遠程主機2:

命令格式:

ssh -t remoteserver1 ssh remoteserver2

說明:當遠程主機remoteserver2無法直接到達時,可以使用-t參數,然后由remoteserver1跳轉到remoteserver2。在此過程中要先輸入remoteserver1的密碼,然后再輸入remoteserver2的密碼,然后就可以操作remoteserver2了。

4、通過SSH運行遠程shell命令:

命令格式:

ssh -l name remoteserver ‘command’

說明:連接到遠程主機,并執行遠程主機的command命令。例如:查看遠程主機的內存使用情況。

$ ssh –l root 192.168.1.100 svmon –G

www.2cto.com

5、修改SSH監聽端口:

默認情況下,SSH監聽連接端口22,攻擊者使用端口掃描軟件就可以看到主機是否

運行有SSH服務,將SSH端口修改為大于1024的端口是一個明智的選擇,因為大多數端口掃描軟件(包括nmap)默認情況都不掃描高位端口。打開/etc/ssh/sshd_config文件并查找下面這樣的行:

Port ?22

去掉該行前面的# 號,然后修改端口號并重新啟動SSH服務:

$ /etc/init.d/ssh restart

6、僅允許SSH協議版本2:

有兩個SSH協議版本,僅使用SSH協議版本2會更安全,SSH協議版本1有安全問

題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件并查找下面這樣的行:

#Protocol 2,1

修改為

Protocol 2

7、禁止root用戶登錄:

通常情況下,不采用直接用root用戶登錄到遠程主機,由于root用戶擁有超級權限,這樣會帶來安全隱患,所以,一般我們用普通用戶登錄,當需要管理遠程主機時,再切換到root用戶下。打開/etc/ssh/sshd_config文件并查找下面這樣的行:

#PermitRootLogin yes

將#號去掉,然后將yes修改成no,重啟ssh服務,這樣就可以禁止root用戶登錄。

8、設置登錄時提示信息

首先編輯一個文件,如bannertest.txt,文件內容自行定義。然后打開/etc/ssh/sshd_config文件并查找下面這樣的行:

#Banner /some/path

將#號去掉,然后將bannertest.txt文件的全路徑替換/some/path,然后保存,重啟ssh服務。當客戶端登錄時,就會看到bannertest.txt文件中的提示信息。

9、進行端口映射:

假如公司內網有臺web服務器,但是只對內不對外,這樣,外網就無法訪問,可以用ssh進行端口映射來實現外網訪問內網的web服務器。假如web服務器名為webserver,webserver可以用ssh訪問到遠端主機remoteserver,登錄到webserver,然后用下面命令進行映射

命令格式:

ssh -R ?3000:localhost:80 ?remoteserver

執行完成后,在remoteserver機器上,執行netstat -an|grep 3000,查看有沒有開通3000端口。并執行以下命令觀察是否可以打開webserver上的網頁

$ w3m http://127.0.0.1:3000

如果能打開界面,說明映射成功.但是,這只限于本機訪問web服務器,即只能remoteserver機器訪問webserver。因為3000端口綁定的是remoteserver機器的127.0.0.1端口。可以編輯remoteserver機器上的/etc/ssh/sshd_config文件并添加如下內容:

添加 GatewayPorts yes ?內容,把監聽端口3000綁定到 0.0.0.0 地址上,這樣外部的所有機器都能訪問到這個監聽端口,然后保存退出。并重啟ssh服務。完成后其它機器就可以在瀏覽器中輸入 http://remoteserver:3000來訪問webserver了。

10、scp命令:

scp命令是SSH中最方便有用的命令,可以在兩臺服務器之間傳送文件。并且在傳輸過程中仍是使用ssh加密的。

命令格式:

scp -p root@192.168.1.120:/tmp/test /bak

將遠程主機的/tmp/test 文件復制到本地的/bak文件夾下

scp -p /bak/1234 root@192.168.1.120:/tmp

將本地/bak/1234 文件復制到遠程主機的/tmp路徑下

ssh還有很多其他用法,例如sftp等,這里不在講述,有興趣可以從網上查些資料

=================================

ssh服務常見問題總結

問題一

ssh登錄的時候鏈接端口失敗

提示(1):

# ssh 172.16.81.221

ssh: connect to host 172.16.81.221 port 22: No route to host

這由于server端沒有開機或是網絡不通(這個原因很多,最簡單的是網線沒有插。還有就是可能會是網卡down了等)

提示(2):

# ssh work@172.16.81.221

ssh: connect to host 172.16.81.221 port 22: Connection refused

這是由于對方server的ssh服務沒有開。這個server端開啟服務即可。

問題二

ssh到server上的時候密碼是對的但是報如下信息:

# ssh 172.16.81.221

root@172.16.81.221's password:

Permission denied, please try again.

這個是由于如果不輸入用戶名的時候默認的是root用戶,但是安全期間ssh服務默認沒有開root用戶的ssh權限

解決方法:

要修改root的ssh權限,即修改 /etc/ssh/sshd_config文件中

PermitRootLogin no 改為 PermitRootLogin yes

問題三

登錄是出現如下提示:

ssh root@172.16.81.221

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)!

It is also possible that the RSA host key has just been changed.

The fingerprint for the RSA key sent by the remote host is

76:fb:b3:70:14:48:19:d6:29:f9:ba:42:46:be:fb:77.

Please contact your system administrator.

Add correct host key in /home/fante/.ssh/known_hosts to get rid of this

message.

Offending key in /home/fante/.ssh/known_hosts:68

RSA host key for 172.16.81.221 has changed and you have requested strict checking.

Host key verification failed.

server端密碼或是ip對應的server等其他發生改變的時候。解決方法一般就需要刪除~/.ssh/known_hosts的對應行,然后再登錄即可。

問題四

如何通過ssh使用遠程的圖形啟動到本地。

在本機執行xhost +修改遠端/etc/ssh/sshd_config文件,X11Forwarding yes這一行為yes。重啟ssh服務。登錄時執行ssh -X [遠端IP]登錄之后執行圖形配置工具可以在本機顯示 。

=================================

ssh連接不上解決思路

近期因為搭建新服次數較多,所以自己總結了一下在遇到 ssh連接不上時候的解決思路,供大家參考。大家如果有什么新的思路也可以一起討論一下 ~

以下的測試沒有特殊說明均是使用普通賬號登陸

www.2cto.com

狀況一: ssh IP_A 或ssh root@IP_A 都顯示 Permission denied (publickey,gssapi-with-mic).

思路:可以檢查一下IP_A上面的SSH版本是否正確,線上服務器如果存在sshd路徑是/use/local/bin/sshd的,一定要升級sshd版本,正確的版本是/usr/sbin/sshd

狀況二: ssh IP_A顯示 Permission denied (publickey,gssapi-with-mic).但是ssh root@IP_A 成功

思路:可以檢查一下/etc/ssh/sshd_config,里面有一段AllowUsers,將User_name@IP_B[IP_B_HOSTNAME]寫進去,然后再嘗試連接一下

狀況三: ssh IP_A總是需要密碼,但是ssh root@IP_A 成功(或也不成功,也需要密碼)

思路:可以檢查一下文件夾和.ssh/authorized_keys的權限,如果權限太大也會出問題。基本authorized_keys給740就可以了。文件夾不僅僅是指.ssh,還需要注意一下/home/user,當user文件夾的權限過大時也會出現問題,這里需要注意一下

ssh -v root@IP_A ? (顯示debug信息,便于后續調試)

另外在實際中需要關注一下messlog,看一下里面有沒有報錯信息

轉自http://www.2cto.com/os/201302/191304.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 名詞延伸 通俗的說,域名就相當于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,644評論 2 56
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,586評論 9 467
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,239評論 2 33
  • SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group...
    shuff1e閱讀 1,805評論 1 11