ssh 算是 linux 下最常用的工具之一毫缆,雖然用了很多次但對它并不是很了解,本文將查找一些資料并總結(jié)自己使用的 ssh 乐导,希望能夠通過這篇文章苦丁,幫助理解和使用 ssh。
最早的時(shí)候物臂,互聯(lián)網(wǎng)通信都是明文通信旺拉,一旦被截獲,內(nèi)容就暴露無疑棵磷。1995 年蛾狗,芬蘭學(xué)者Tatu Ylonen設(shè)計(jì)了 ssh 協(xié)議,將登錄信息全部加密仪媒,成為互聯(lián)網(wǎng)安全的一個基本解決方案沉桌,迅速在全世界獲得推廣,目前已經(jīng)成為 linux 系統(tǒng)的標(biāo)準(zhǔn)配置。
ssh 是一種網(wǎng)絡(luò)協(xié)議留凭,用于計(jì)算機(jī)之間的加密登錄佃扼。如果一個用戶從本地計(jì)算機(jī),使用 ssh 協(xié)議登錄另一臺遠(yuǎn)程計(jì)算機(jī)蔼夜,我們就可以認(rèn)為兼耀,這種登錄是安全的,即使被中途截獲求冷,密碼也不會泄露瘤运。需要指出的是,ssh 只是一種協(xié)議遵倦,存在多種實(shí)現(xiàn)尽超,既有商業(yè)實(shí)現(xiàn),也有開源實(shí)現(xiàn)梧躺。
基本用法
假定你要以用戶名 user似谁,登錄遠(yuǎn)程主機(jī) host,如:ssh user@host
掠哥;SSH的默認(rèn)端口是 22巩踏,也就是說,你的登錄請求會送進(jìn)遠(yuǎn)程主機(jī)的 22 端口续搀。使用 p 參數(shù)塞琼,可以修改這個端口,如:ssh -p 2222 user@host
ssh 登錄同樣可以使用密碼登錄禁舷,輸入用戶名后彪杉,輸入密碼即可完成登錄,但一般我們不這么做牵咙,我們使用 ssh 的目的就是防止密碼被截取派近,因此一般我們采用秘鑰對的形式來驗(yàn)證本地主機(jī)和目標(biāo)機(jī)是否可以配對。我們將公鑰放在目標(biāo)機(jī)器上洁桌,然后登錄目標(biāo)機(jī)器時(shí)畔勤,本地機(jī)器的私鑰能夠和目標(biāo)機(jī)器的秘鑰配對笋庄,則驗(yàn)證通過殷蛇,否則驗(yàn)證失敗孙乖。
值得注意的是,公鑰并不需要特別在意吠谢,它往往是公開的土童,即便被別人獲取也無法產(chǎn)生威脅,真正重要的是私鑰工坊。我們可以將公鑰比作你的用戶名献汗,私鑰則是你的密碼错沃。密碼的重要性不言而喻,因此私鑰一旦丟失往往會造成很嚴(yán)重的后果雀瓢,我們往往需要更改私鑰的存放位置枢析,或者給私鑰再設(shè)置一個使用密碼。
本地SSH配置
- 首先我們需要檢查你電腦上現(xiàn)有的 ssh key:
$ cd ~/.ssh 檢查本機(jī)的ssh密鑰
如果提示:No such file or directory 說明你是第一次使用 git刃麸。
- 生成新的SSH Key:
ssh-keygen -t rsa -C "郵件地址@youremail.com"
此處的郵箱地址醒叁,你可以輸入自己的郵箱地址;注意2: 此處的「-C」的是大寫的「C」
- 然后系統(tǒng)會要你輸入密碼:
Enter passphrase (empty for no passphrase):<輸入加密串>
Enter same passphrase again:<再次輸入加密串>
在回車中會提示你輸入一個密碼泊业,這個密碼會在你提交項(xiàng)目時(shí)使用把沼,相當(dāng)于二次的加密,如果為空的話提交項(xiàng)目時(shí)則不用輸入吁伺。這個設(shè)置是防止別人往你的項(xiàng)目里提交內(nèi)容饮睬。個人嫌麻煩一般不會再設(shè)定密碼,本身ssh的訪問就屬于本地自動加密認(rèn)真篮奄,就比較安全捆愁,除非你秘鑰丟失,否則一般不會出問題窟却,
看到這樣的界面昼丑,就成功設(shè)置了本地的 ssh key了:
~/.ssh/id_rsa.pub 就是需要使用的公鑰,將該公鑰加入到其他系統(tǒng)上面或者支持ssh服務(wù)的軟件上面即可實(shí)現(xiàn)訪問夸赫。
將本地公鑰上傳到遠(yuǎn)程linux服務(wù)器
不同的 Linux 之間 copy 文件常用有3種方法:
- 第一種就是 ftp菩帝,也就是其中一臺 Linux 安裝 ftp Server,這樣可以另外一臺使用 ftp 的 client 程序來進(jìn)行文件的 copy茬腿。
- 第二種方法就是采用 samba 服務(wù)呼奢,類似 Windows 文件 copy 的方式來操作,比較簡潔方便切平。
- 第三種就是利用 scp 命令來進(jìn)行文件復(fù)制握础。
scp 是有Security的文件 copy,基于 ssh 登錄揭绑。操作起來比較方便弓候,比如要把當(dāng)前一個文件 copy 到遠(yuǎn)程另外一臺主機(jī)上郎哭,可以如下命令他匪。
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
然后會提示你輸入另外那臺 172.19.2.75 主機(jī)的 root 用戶的登錄密碼,接著就開始 copy 了夸研。如果想反過來操作邦蜜,把文件從遠(yuǎn)程主機(jī) copy 到當(dāng)前系統(tǒng),也很簡單亥至。
scp root@/full.tar.gz 172.19.2.75:/home/root/full.tar.gz home/daisy/full.tar.gz
- 我們將原始機(jī)的公鑰拷貝到目標(biāo)服務(wù)器的 .ssh 目錄下悼沈,且命名為 authorized_keys贱迟。
scp /home/git/.ssh/id_rsa.pub git@ubuntu_server:/home/git/.ssh/authorized_keys
注意,ubuntu_server 為 ip 對應(yīng)的名稱絮供,這邊可以改成 ip 地址衣吠,git 為用戶名。修改實(shí)體機(jī)(本地機(jī)而不是服務(wù)器)的 ip 配置文件 /ect/hosts
壤靶,加入如下行:192.168.18.202 ubuntu_server
缚俏, ubuntu_server 是你的虛擬機(jī)的主機(jī)名稱,而 ubuntu_server 以后將代替 192.168.18.202 出現(xiàn)贮乳。如果你的虛擬機(jī)名不是 ubuntu_server,可以修改 /etc/hostname 中的名稱忧换。
注意:ssh在使用時(shí)無法通過VPN,需要人為手動做一些修改向拆,這邊主要是通過將需要ssh訪問的ip地址直接經(jīng)過網(wǎng)卡而不經(jīng)過vpn亚茬。詳細(xì)內(nèi)容參見linux 下 ssh 通過VPN推送失敗文章。**
windows 下使用 ssh
windows 使用 ssh 一般可以通過 putty 或者 secureCRT浓恳,這兩款軟件都是自帶 ssh 服務(wù)的刹缝,一般你安裝他們后,windows 上就可以使用 ssh 了颈将。如果需要秘鑰登錄的話赞草,需要手動加載秘鑰位置,如:secureCRT 的秘鑰在 tools 下的 manage agents keys -> add吆鹤,具體的一些位置需要自己去查找厨疙,這邊不再詳細(xì)討論。
windows 下除了 ssh 登錄外疑务,使用 git 時(shí)也會需要加載私鑰沾凄,git 官方版回去默認(rèn)位置找私鑰,默認(rèn)位置一般為當(dāng)前用戶目錄下的 .ssh 文件夾下知允。對于 linux 就是 ~/.ssh/ 目錄下撒蟀,而 windows 則是 C:/users/當(dāng)前登錄用戶/.ssh/ 目錄下。
使用 WinSCP 時(shí)温鸽,也可以使用 scp 復(fù)制文件保屯,注意該軟件只能讀 ppk 格式的秘鑰,如果其采用的不是 openSSH 的秘鑰涤垫,則需要通過工具轉(zhuǎn)換以下姑尺,步驟為:
- 工具->運(yùn)行 PuTTYgen->load你的秘鑰->save private key 保存轉(zhuǎn)成 ppk 格式 (如果直接通過 WinSCP 生成秘鑰對的話,可以在 PuTTYgen 中直接 點(diǎn)解 generate 生成新的秘鑰對)
- 工具->運(yùn)行pageant->add key 將剛剛生成的秘鑰載入進(jìn)來
http://cnfeat.com/blog/2014/05/10/how-to-build-a-blog/
http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html
http://blog.csdn.net/hunanchenxingyu/article/details/40544513
http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html