Ubuntu中SSH命令詳解
SSH(SecureShell)是目前比較可靠的為遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。通過SSH,可以把所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。下面介紹的是Ubuntu中SSH的概念和使用的方法,具體內容如下所述。
什么是SSH
SSH的英文全稱是SecureSHell,SSH協議族由IETF(InternetEngineeringTaskForce)的NetworkWorkingGroup制定,SSH協議的內容SSH協議是建立在應用層和傳輸層基礎上的安全協議。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣”中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。
傳統的網絡服務程序,如FTP、Pop和Telnet其本質上都是不安全的;因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一臺機器冒充真正的服務器接收用戶傳給服務器的數據,然后再冒充用戶把數據傳給真正的服務器。
SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、Pop、甚至為PPP提供一個安全的”通道”。
最初SSH是由芬蘭的一家公司開發的。但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。SSH是由客戶端和服務端的軟件組成的。SSH安裝容易、使用簡單,而且比較常見,一般的Unix系統、Linux系統、FreeBSD系統都附帶有支持SSH的應用程序包。
讓Ubuntu啟動SSH服務
這個不用多說了,還是apt-getinstall大法:
- #sudoapt-getinstallssh
不使用私鑰的SSH還是有一定風險的。現在我們嘗試在ubuntu服務器上生成私鑰和公鑰
- #ssh-keygen
后面會提示你私鑰的文件名,放在哪,這些問題,選擇默認就行了,中途會讓你輸入密碼,這個你可得記住。這樣你的用戶目錄下會多出一個隱藏的.ssh文件夾。可以使用ls-A來查看。里面還有兩文件,一個是id_rsa(私鑰),還有一個是id_rsa.pub(公鑰)
這個私鑰和公鑰到底是什么概念?
簡單說,公鑰就是你的銀行帳戶,這個可能別人也知道,但只有手上有信用卡或是存折才能有資格去試帳戶密碼。所以這個信用卡和存折就是你的私鑰。所以這個私鑰得保存好。
也就是說,那個id_rsa文件你得保存好,可以弄到U盤上,隨身帶著。而id_rsa.pub得改成系統默認識別的authorized_keys并保存在.ssh文件夾下
現在服務器已經可以有兩種方式的登陸了,一種就是直接用戶密碼識別登陸,還有一個是RSA登陸。當然,后面那個比較安全,那么我們就把服務器還有一種登陸方式給去掉。
找到etc/ssh/sshd.conf這個文件,它是負責服務器端上的設置的:
#最好把這個選項設置成“PermitRootLoginwithout-password”,這樣“root”用戶就不能從沒有密匙的計算機上登錄。把這個選項設置成“no”
#將禁止“root”用戶登錄,只能用“su”命令從普通用戶轉成“root”。
- PermitRootLoginwithout-password
#把這個選項設置為“no”只允許用戶用基于密匙的方式登錄。
- PasswordAuthenticationno
利用putty使用RSA登陸
辛辛苦苦弄好的鑰匙,那么我們就用起來吧。這個操作是在windows平臺上的。
首先打開解壓putty.tgz文件。先找到“puttygen.exe”這個文件,我們要讓它幫我們做個通行證。
選擇“載入”,也就是載入已保存的密鑰文件(私要文件),彈出的對話框里把“文件類型”換成“所有文件”然后選中我們從ubuntu服務器上生成的id_rsa文件。
接著,它會提示你輸入密碼,這不是你linux用戶密碼,而是前面生成密鑰時候的密碼
完成之后就會提示你保存好私鑰文件,按下“保存私鑰”起好名字,注意(格式為*.ppk)因為putty只識別自己做的鑰匙。。。如果你只是用putty遠程登陸的話,那么另外個id_rsa文件可以不要了,保管好*.ppk就行
下來就是用這把鑰匙登陸了,只要在登陸前完成這步:
好了。基本上SSH連接遠端linux的任務就完成了。
SSH遠程登入Ubuntu機
- sshusername@Ubuntu’sip(eg.192.168.0.1)
將文件/文件夾從遠程Ubuntu機拷至本地(scp)
- scp-rusername@192.168.0.1:/home/username/remotefile.txt.
將文件/文件夾從本地拷至遠程Ubuntu機(scp)
- scp-rlocalfile.txtusername@192.168.0.1:/home/username/
將文件/文件夾從遠程Ubuntu機拷至本地(rsync)
- rsync-v-u-a–delete–rsh=ssh–statsusername@192.168.0.1:/home/username/remotefile.txt.
將文件/文件夾從本地拷至遠程Ubuntu機(rsync)
- rsync-v-u-a–delete–rsh=ssh–statslocalfile.txtusername@192.168.0.1:/home/username/
在Windows機上用SSH遠程登錄Ubuntu機
- sh-Xusername@192.168.0.1
支持SSH圖形界面。也就是說,gedit打開和另存都是在服務器端操作的。nautilus打開服務器端的文件管理器。這下就比只用命令行方便多了。不知道windows下的putty支持不
- ssh-Xusername@192.168.0.1ls
直接在服務器端執行ls返回結果到客戶端
下載PuTTY
如何在Windows機上拷貝文件/文件夾從/到遠程Ubuntu機
下載FileZilla
如何限制通過SSH遠程連接的用戶帳號
如,假如你啟用了SSH服務,那么任何有有效帳號的用戶都可以遠程連接。這可能會導致一些安全問題,由于有一些遠程密碼破解工具可以嘗試常見的用戶名/密碼
備份SSH服務的配置文件
- sudocp/etc/ssh/sshd_config/etc/ssh/sshd_config.ORIGINAL
編輯配置文件
- #sudogedit/etc/ssh/sshd_config
*將參數PermitRootLogin由yes更改為no。超級用戶不能直接通過遠程聯機。
*添加參數AllowUsers設定遠程連接的用戶名(用空格來分割)。
*您也可以使用DenyUsersforfine-grainedselectionofusers.
- *Ifyouenabletheopensshserverandyouhavenointentionfornowtoenableremoteconnections,youmayaddAllowUsersnosuchuserheretodisableanyoneconnecting.
SSH命令
ssh命令可以用來在遠程機器上不經shell提示登錄而執行命令。它的語法格式是:sshhostnamecommand。譬如,如果你想在遠程主機penguin.example.net上執行ls/usr/share/doc命令,在shell提示下鍵入下面的命令:
- sshpenguin.example.netls/usr/share/doc
使用scp命令
scp命令可以用來通過安全、加密的連接在機器間傳輸文件。它與rcp相似。
把本地文件傳輸給遠程系統的一般語法是:
- scplocalfileusername@tohostname:/newfilename
localfile指定源文件,username@tohostname:/newfilename指定目標文件。
要把本地文件shadowman傳送到你在penguin.example.net上的賬號內,在shell提示下鍵入(把username替換成你的用戶名):
- scpshadowmanusername@penguin.example.net:/home/username
這會把本地文件shadowman傳輸給penguin.example.net上的/home/username/shadowman文件。
把遠程文件傳輸給本地系統的一般語法是:
- scpusername@tohostname:/remotefile/newlocalfile
remotefile指定源文件,newlocalfile指定目標文件。
源文件可以由多個文件組成。譬如,要把目錄/downloads的內容傳輸到遠程機器penguin.example.net上現存的uploads目錄,在shell提示下鍵入下列命令:
- scp/downloads/*username@penguin.example.net:/uploads/
使用sftp命令
sftp工具可以用來打開一次安全互動的FTP會話。它與ftp相似,只不過,它使用安全、加密的連接。它的一般語法是:sftpusername@hostname.com。一旦通過驗證,你可以使用一組和使用FTP相似的命令。請參閱sftp的說明書頁(man)來獲取這些命令的列表。要閱讀說明書頁,在shell提示下執行mansftp命令。sftp工具只在OpenSSH版本2.5.0p1以上才有。
總結:
希望本文介紹的Ubuntu中SSH命令的內容能夠對讀者有所幫助,更多有關linux系統的知識還有待于讀者去探索和學習。