口令登錄
假定你要以用戶名user浸赫,登錄遠(yuǎn)程主機(jī)host夸政,只要一條簡(jiǎn)單命令就可以了元旬。
$ ssh user@host ?如:ssh pika@192.168.0.111
如果本地用戶名與遠(yuǎn)程用戶名一致,登錄時(shí)可以省略用戶名秒梳。
$ ssh host
SSH的默認(rèn)端口是22法绵,也就是說箕速,你的登錄請(qǐng)求會(huì)送進(jìn)遠(yuǎn)程主機(jī)的22端口酪碘。使用p參數(shù),可以修改這個(gè)端口盐茎。
$ ssh -p 2222 user@host
上面這條命令表示兴垦,ssh直接連接遠(yuǎn)程主機(jī)的2222端口。
如果你是第一次登錄對(duì)方主機(jī)字柠,系統(tǒng)會(huì)出現(xiàn)下面的提示:
$ ssh user@host
The authenticity of host 'host (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
這段話的意思是探越,無法確認(rèn)host主機(jī)的真實(shí)性,只知道它的公鑰指紋窑业,問你還想繼續(xù)連接嗎钦幔?
所謂"公鑰指紋",是指公鑰長(zhǎng)度較長(zhǎng)(這里采用RSA算法常柄,長(zhǎng)達(dá)1024位)鲤氢,很難比對(duì),所以對(duì)其進(jìn)行MD5計(jì)算西潘,將它變成一個(gè)128位的指紋卷玉。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再進(jìn)行比較喷市,就容易多了相种。
很自然的一個(gè)問題就是,用戶怎么知道遠(yuǎn)程主機(jī)的公鑰指紋應(yīng)該是多少品姓?回答是沒有好辦法寝并,遠(yuǎn)程主機(jī)必須在自己的網(wǎng)站上貼出公鑰指紋,以便用戶自行核對(duì)腹备。
假定經(jīng)過風(fēng)險(xiǎn)衡量以后衬潦,用戶決定接受這個(gè)遠(yuǎn)程主機(jī)的公鑰。
Are you sure you want to continue connecting (yes/no)? yes
系統(tǒng)會(huì)出現(xiàn)一句提示馏谨,表示host主機(jī)已經(jīng)得到認(rèn)可别渔。
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
然后,會(huì)要求輸入密碼。
Password: (enter password)
如果密碼正確哎媚,就可以登錄了喇伯。
當(dāng)遠(yuǎn)程主機(jī)的公鑰被接受以后,它就會(huì)被保存在文件$HOME/.ssh/known_hosts之中拨与。下次再連接這臺(tái)主機(jī)稻据,系統(tǒng)就會(huì)認(rèn)出它的公鑰已經(jīng)保存在本地了,從而跳過警告部分买喧,直接提示輸入密碼捻悯。
SSH遠(yuǎn)程操作
SSH數(shù)據(jù)傳輸
SSH不僅可以用于遠(yuǎn)程主機(jī)登錄,還可以直接在遠(yuǎn)程主機(jī)上執(zhí)行操作淤毛。
$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
單引號(hào)中間的部分今缚,表示在遠(yuǎn)程主機(jī)上執(zhí)行的操作;后面的輸入重定向低淡,表示數(shù)據(jù)通過SSH傳向遠(yuǎn)程主機(jī)姓言。
這就是說,SSH可以在用戶和遠(yuǎn)程主機(jī)之間蔗蹋,建立命令和數(shù)據(jù)的傳輸通道何荚,因此很多事情都可以通過SSH來完成。
下面看幾個(gè)例子猪杭。
【例1】
將$HOME/src/目錄下面的所有文件餐塘,復(fù)制到遠(yuǎn)程主機(jī)的$HOME/src/目錄。
$ cd && tar czv src | ssh user@host 'tar xz'
【例2】
將遠(yuǎn)程主機(jī)$HOME/src/目錄下面的所有文件皂吮,復(fù)制到用戶的當(dāng)前目錄戒傻。
$ ssh user@host 'tar cz src' | tar xzv
【例3】
查看遠(yuǎn)程主機(jī)是否運(yùn)行進(jìn)程httpd。
$ ssh user@host 'ps ax | grep [h]ttpd'
建議使用scp進(jìn)行遠(yuǎn)程copy
scp 跨機(jī)遠(yuǎn)程拷貝
scp是secure copy的簡(jiǎn)寫涮较,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令稠鼻,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器狂票,而且scp傳輸是加密的候齿。可能會(huì)稍微影響一下速度闺属。兩臺(tái)主機(jī)之間復(fù)制文件必需得同時(shí)有兩臺(tái)主機(jī)的復(fù)制執(zhí)行帳號(hào)和操作權(quán)限慌盯。
scp命令參數(shù)
-1 強(qiáng)制scp命令使用協(xié)議ssh1
-2 強(qiáng)制scp命令使用協(xié)議ssh2
-4 強(qiáng)制scp命令只使用IPv4尋址
-6 強(qiáng)制scp命令只使用IPv6尋址
-B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語(yǔ))
-C 允許壓縮。(將-C標(biāo)志傳遞給ssh掂器,從而打開壓縮功能)
-p 留原文件的修改時(shí)間亚皂,訪問時(shí)間和訪問權(quán)限。
-q 不顯示傳輸進(jìn)度條国瓮。
-r 遞歸復(fù)制整個(gè)目錄灭必。
-v 詳細(xì)方式顯示輸出狞谱。scp和ssh(1)會(huì)顯示出整個(gè)過程的調(diào)試信息。這些信息用于調(diào)試連接禁漓,驗(yàn)證和配置問題跟衅。
-c cipher 以cipher將數(shù)據(jù)傳輸進(jìn)行加密,這個(gè)選項(xiàng)將直接傳遞給ssh播歼。
-F ssh_config 指定一個(gè)替代的ssh配置文件伶跷,此參數(shù)直接傳遞給ssh。
-i identity_file 從指定文件中讀取傳輸時(shí)使用的密鑰文件秘狞,此參數(shù)直接傳遞給ssh叭莫。
-l limit 限定用戶所能使用的帶寬,以Kbit/s為單位烁试。
-o ssh_option 如果習(xí)慣于使用ssh_config(5)中的參數(shù)傳遞方式雇初,
-P port 注意是大寫的P, port是指定數(shù)據(jù)傳輸用到的端口號(hào)
-S program 指定加密傳輸時(shí)所使用的程序。此程序必須能夠理解ssh(1)的選項(xiàng)廓潜。
scp一般有六種使用方法
本地復(fù)制遠(yuǎn)程文件:(把遠(yuǎn)程的文件復(fù)制到本地)
scp root@www.test.com:/val/test/test.tar.gz /val/test/test.tar.gz
遠(yuǎn)程復(fù)制本地文件:(把本地的文件復(fù)制到遠(yuǎn)程主機(jī)上)
scp /val/test.tar.gz root@www.test.com:/val/test.tar.gz
本地復(fù)制遠(yuǎn)程目錄:(把遠(yuǎn)程的目錄復(fù)制到本地)
scp -r root@www.test.com:/val/test/ /val/test/
遠(yuǎn)程復(fù)制本地目錄:(把本地的目錄復(fù)制到遠(yuǎn)程主機(jī)上)
scp -r ./ubuntu_env/ root@192.168.0.111:/home/pipi
pika:/media/pika/files/machine_learning/datasets$scp -r SocialNetworks/ piting@192.168.0.172:/media/data/pipi/datasets
本地復(fù)制遠(yuǎn)程文件到指定目錄:(把遠(yuǎn)程的文件復(fù)制到本地)
scp root@www.test.com:/val/test/test.tar.gz /val/test/
遠(yuǎn)程復(fù)制本地文件到指定目錄:(把本地的文件復(fù)制到遠(yuǎn)程主機(jī)上)
scp /val/test.tar.gz root@www.test.com:/val/
SSH的其他參數(shù)
SSH還有一些別的參數(shù)抵皱,也值得介紹善榛。
N參數(shù)辩蛋,表示只連接遠(yuǎn)程主機(jī),不打開遠(yuǎn)程shell移盆;T參數(shù)悼院,表示不為這個(gè)連接分配TTY。這個(gè)兩個(gè)參數(shù)可以放在一起用咒循,代表這個(gè)SSH連接只用來傳數(shù)據(jù)据途,不執(zhí)行遠(yuǎn)程操作。
$ ssh -NT -D 8080 host
f參數(shù)叙甸,表示SSH連接成功后颖医,轉(zhuǎn)入后臺(tái)運(yùn)行。這樣一來裆蒸,你就可以在不中斷SSH連接的情況下熔萧,在本地shell中執(zhí)行其他操作。
$ ssh -f -D 8080 host
要關(guān)閉這個(gè)后臺(tái)連接僚祷,就只有用kill命令去殺掉進(jìn)程佛致。