实现 SSH 无密码登录 、 ssh 常用命令
OpenSSH是互聯網技術用戶所依賴的SSH連接工具的免費版本。
telnet,rlogin 和 ftp 用戶可能沒有意識到他們的密碼是通過互聯網傳輸的,并且是未加密的。
但是?OpenSSH 加密所有流量(包括密碼)以有效消除竊聽,連接劫持和其他攻擊。
OpenSSH 還提供了安全隧道功能和多種身份驗證方法,并且支持所有SSH協議版本。
ssh-keygen? 產生公鑰與私鑰對. ssh-copy-id?將本機的公鑰復制到遠程機器的authorized_keys文件中,ssh-copy-id也能讓你有到遠程機器的home, ~./ssh , 和 ~/.ssh/authorized_keys的權利
第一步:在本地機器上使用ssh-keygen產生公鑰私鑰對
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zhz/.ssh/id_rsa):
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl9N5+xboqSIagBx02rdZ2fkROCPW8iW7hl6Gu+2hkBYYy/b1qcOm8RF/AMyas3i0QEK7Hcu9H51l2lulVbS5n9M9FaWIyYzssaS012x2mg9iA6MxPMlaXFsZ5jnVrGicndzf3VUu9kCErp5q0OzzMjsG3PKQevzWZJSBaFgc8NF5ZJ+VT54BN8ktMTHVwOo15I2Uai+bs4eP0NsuwIJmGyYIUOuvTuUtJxGV3hZ+tcjhupupqVCwYOE+cDz8VkFBGtnKsdE69hWoY2VUfEOAfHZptra7Ce9dXfDgx9jxuuNiJYtGo/bZDfe+UJ5HUv8wrL+hFeRIihdmP2CKJD8j5 zhz@zhz
注意:?ssh-copy-id?將key寫到遠程機器的 ~/?.ssh/authorized_key.文件中
第三步:? 登錄到 遠程機器不用輸入密碼常見問題:
上述是給eucalyptus用戶賦予無密碼登陸的權利
使用選項?-i?,當沒有值傳遞的時候或者?如果?~/.ssh/identity.pub?文件不可訪問(不存在),?ssh-copy-id?將顯示上述的錯誤信息??( -i選項會優先使用將ssh-add -L的內容)
以下轉自:http://blog.urfix.com/25-ssh-commands-tricks/
1)將ssh密鑰復制到user @ host以啟用無密碼ssh登錄。
ssh-copy-id user @ host
要生成密鑰,請使用命令ssh-keygen
2)從某個機器的端口80啟動一條隧道到您當地的郵局2001
ssh -N -L2001:localhost:80 somemachine
現在你可以訪問http:// localhost:2001 /
3)將麥克風輸出到遠程電腦的揚聲器
dd if = / dev / dsp |?ssh -c arcfour -C username @ host dd of = / dev / dsp
這會將麥克風端口的聲音輸出到ssh目標電腦的揚聲器端口。音質很差,所以你會聽到很多嘶嘶聲。
4)比較遠程文件和本地文件
ssh user @ host cat / path / to / remotefile |?diff / path / to / localfile -
用于檢查本地文件和遠程文件是否存在差異。
5)通過SSH安裝文件夾/文件系統
sshfs name @ server:/ path / to / folder / path / to / mount / point
從http://fuse.sourceforge.net/sshfs.html安裝SSHFS?
將允許您通過網絡安裝文件夾安全性。
6)通過中間的主機進行SSH連接
ssh -t reachable_host ssh unreachable_host
Unreachable_host從本地網絡不可用,但可從reachable_host的網絡獲得。此命令通過與hidden_??host的“隱藏”連接創建與unreachable_host的連接。
7)通過主機從host1復制到host2
ssh root @ host1“cd / somedir / tocopy / && tar -cf - ?!眧?ssh root @ host2“cd / samedir / tocopyto / && tar -xf - ”好,如果只有你有權訪問host1和host2,但他們沒有訪問你的主機(所以ncat不會工作),他們沒有直接訪問對方。
?
8)遠程運行任何GUI程序
?
ssh -fX <user> @ <host> <program>SSH服務器配置需要:
X11Forwarding yes#這是Debian中的默認設置
而且它也很方便:
壓縮延遲
9)創建一個持久連接到一臺機器
ssh -MNf <user> @ <host>
在后臺創建與主機的永久SSH連接。將此與?/ .ssh / config中的設置相結合:
主機主機
ControlPath ~/.ssh/master-%r@%h:%p?
ControlMaster否
與計算機的所有SSH連接都將通過Persisten SSH套接字。如果您使用SSH定期同步文件(使用rsync / sftp / cvs / svn),這非常有用,因為每次打開ssh連接時都不會創建新套接字。
10)通過ssh連接屏幕
ssh -t remote_host屏幕-r
直接附加遠程屏幕會話(保存無用的父級bash進程)
11)端口敲擊!
knock <host> 3000 4000 5000 && ssh -p <port> user @ host && knock <host> 5000 4000 3000
敲開端口以打開服務端口(例如ssh),再敲一下關閉端口。你必須安裝knockd。
見下面的示例配置文件。
[options]?
logfile = /var/log/knockd.log?
[openSSH]?
sequence = 3000,4000,5000?
seq_timeout = 5?
command = / sbin / iptables -A INPUT -i eth0 -s%IP%-p tcp -dport 22 - j ACCEPT?
tcpflags = syn?
[closeSSH]?
sequence = 5000,4000,3000?
seq_timeout = 5?
command = / sbin / iptables -D INPUT -i eth0 -s%IP%-p tcp -dport 22 -j ACCEPT?
tcpflags = syn
12)刪除文本文件中的一行。有用的修復
ssh-keygen -R <the_offending_host>
在這種情況下,最好使用專用工具
13)通過ssh運行復雜的遠程shell cmds,不用轉義引號
ssh主機-l用戶$(<cmd.txt)
更簡單的方法。更便攜的版本:ssh主機-l用戶“`cat cmd.txt”“
14)通過一個命令通過SSH將MySQL數據庫復制到新服務器
mysqldump -add-drop-table -extended-insert -force -log-error = error.log -uUSER -pPASS OLD_DB_NAME |?ssh -C user @ newhost“mysql -uUSER -pPASS NEW_DB_NAME”
通過壓縮的SSH隧道轉儲MySQL數據庫并將其用作mysql的輸入 - 我認為這是將數據庫遷移到新服務器的最快和最好的方式!
15)刪除文本文件中的一行。用于修復“ssh主機密鑰更改”警告
sed -i 8d?/ .ssh / known_hosts
16)將你的ssh公鑰從一臺沒有ssh-copy-id的機器復制到一臺服務器上
cat?/ .ssh / id_rsa.pub |?ssh user @ machine“mkdir?/ .ssh;?貓>>?/ .ssh / authorized_keys“
如果您使用Mac OS X或其他不帶有ssh-copy-id的* nix變體,則這一行代碼將允許您將公鑰添加到遠程機器,以便隨后可以在沒有密碼。
17)實時ssh網絡吞吐量測試
是|?pv |?ssh $ host“cat> / dev / null”
通過ssh連接主機并顯示實時傳輸速度,將所有傳輸的數據導向/ dev / null?
需要安裝pv?
Debian:'apt-get install pv'Fedora?
:'yum install pv'(可能需要啟用'extras'存儲庫)
18)如何建立一個你可以重新連接的遠程Gnu屏幕會話
ssh -t user@some.domain.com / usr / bin / screen -xRR
在存在標簽式終端之前,人們一直在使用Gnu屏幕在單個文本終端中打開許多外殼。與ssh結合使用,您可以使用上述選項通過單個遠程連接擁有多個打開的shell。如果使用“Ctrl-a d”進行分離,或者ssh會話意外終止,則遠程shell中運行的所有進程將保持不受干擾,隨時可供您重新連接。其他有用的屏幕命令是“Ctrl-a c”(打開新shell)和“Ctrl-a a”(在shell之間交替)。閱讀此快速參考以獲取更多屏幕命令:http://aperiodic.net/screen/quick_reference
19)恢復大文件的scp
rsync -partial -progress -rsh = ssh $ file_source $ user @ $ host:$ destination_file
它可以使用rsync恢復失敗的安全副本(在通過vpn傳輸像db轉儲這樣的大文件時有用)。
它需要在兩臺主機上安裝rsync。
rsync -partial -progress -rsh = ssh $ file_source $ user @ $ host:$ destination_file local - > remote?
或
rsync -partial -progress -rsh = ssh $ user @ $ host:$ remote_file $ destination_file remote - > local
20)通過ssh w / wireshark遠程分析流量
ssh root@server.com'tshark -f“port!22”-w - '|?wireshark -k -i -
這使用tshark捕獲遠程計算機上的流量,通過ssh鏈接發送原始pcap數據,并將其顯示在wireshark中。按ctrl + C將停止捕獲,不幸的是關閉您的wireshark窗口。這可以通過將-c#傳遞給tshark來處理,只捕獲一定數量的數據包,或通過命名管道重定向數據,而不是直接從ssh傳輸到wireshark。我建議盡可能在tshark命令中進行過濾以節省帶寬。tshark可以用tcpdump替換:
ssh root@example.com tcpdump -w - 'port!22'|?wireshark -k -i -?
21)有一個ssh會話永遠打開
autossh -M50000 -t server.example.com'screen -raAd mysession'
打開一個永久開放的ssh會話,在切換WIFI節點時丟失互聯網連接的筆記本電腦非常棒。
22)更強大,更快,更強大的SSH客戶端
ssh -4 -C -c blowfish-cbc
我們強制IPv4,壓縮流,指定密碼流為Blowfish。我想你可以使用aes256-ctr以及cypher spec。當然,我忽略了諸如主控制會話之類的東西,并且可能無法在您的shell中使用這些會話,盡管這也會加快速度。
23)用cstream調節帶寬
tar -cj / backup |?cstream -t 777k |?ssh主機'tar -xj -C / backup'
這bzips一個文件夾,并通過網絡傳輸到“主機”在777k位/秒。
cstream可以做得更多,看看http://www.cons.org/cracauer/cstream.html#usage?
例如:
echo w00t,我733+ |?cstream -b1 -t2
24)一步將SSH公鑰轉移到另一臺機器上
SSH-凱基;?ssh-copy-id user @ host;?ssh user @ host
該命令序列允許簡單設置(gasp!)無密碼SSH登錄。要小心,就好像你已經在本地機器上的?/ .ssh目錄中有一個SSH密鑰對,那么ssh-keygen可能會覆蓋它們。ssh-copy-id將公鑰復制到遠程主機,并將其附加到遠程帳戶的?/ .ssh / authorized_keys文件中。在嘗試使用ssh時,如果您沒有為密鑰使用密碼,遠程shell會在調用ssh user @ host后不久出現。
25)將stdin復制到你的X11緩沖區
ssh user @ host cat / path / to / some / file |?XCLIP
你有沒有必要scp文件到你的工作機器,以便將其內容復制到郵件中?xclip可以幫助你。它將stdin復制到X11緩沖區,所以您只需中鍵單擊以粘貼該looong文件的內容:)
ssh-copy-id user @ host
要生成密鑰,請使用命令ssh-keygen
2)從某個機器的端口80啟動一條隧道到您當地的郵局2001
ssh -N -L2001:localhost:80 somemachine
現在你可以訪問http:// localhost:2001 /
3)將麥克風輸出到遠程電腦的揚聲器
dd if = / dev / dsp |?ssh -c arcfour -C username @ host dd of = / dev / dsp
這會將麥克風端口的聲音輸出到ssh目標電腦的揚聲器端口。音質很差,所以你會聽到很多嘶嘶聲。
4)比較遠程文件和本地文件
ssh user @ host cat / path / to / remotefile |?diff / path / to / localfile -
用于檢查本地文件和遠程文件是否存在差異。
5)通過SSH安裝文件夾/文件系統
sshfs name @ server:/ path / to / folder / path / to / mount / point
從http://fuse.sourceforge.net/sshfs.html安裝SSHFS?
將允許您通過網絡安裝文件夾安全性。
6)通過中間的主機進行SSH連接
ssh -t reachable_host ssh unreachable_host
Unreachable_host從本地網絡不可用,但可從reachable_host的網絡獲得。此命令通過與hidden_??host的“隱藏”連接創建與unreachable_host的連接。
7)通過主機從host1復制到host2
ssh root @ host1“cd / somedir / tocopy / && tar -cf - 。”|?ssh root @ host2“cd / samedir / tocopyto / && tar -xf - ”好,如果只有你有權訪問host1和host2,但他們沒有訪問你的主機(所以ncat不會工作),他們沒有直接訪問對方。
?
8)遠程運行任何GUI程序
?
ssh -fX <user> @ <host> <program>SSH服務器配置需要:
X11Forwarding yes#這是Debian中的默認設置
而且它也很方便:
壓縮延遲
9)創建一個持久連接到一臺機器
ssh -MNf <user> @ <host>
在后臺創建與主機的永久SSH連接。將此與?/ .ssh / config中的設置相結合:
主機主機
ControlPath ~/.ssh/master-%r@%h:%p?
ControlMaster否
與計算機的所有SSH連接都將通過Persisten SSH套接字。如果您使用SSH定期同步文件(使用rsync / sftp / cvs / svn),這非常有用,因為每次打開ssh連接時都不會創建新套接字。
10)通過ssh連接屏幕
ssh -t remote_host屏幕-r
直接附加遠程屏幕會話(保存無用的父級bash進程)
11)端口敲擊!
knock <host> 3000 4000 5000 && ssh -p <port> user @ host && knock <host> 5000 4000 3000
敲開端口以打開服務端口(例如ssh),再敲一下關閉端口。你必須安裝knockd。
見下面的示例配置文件。
[options]?
logfile = /var/log/knockd.log?
[openSSH]?
sequence = 3000,4000,5000?
seq_timeout = 5?
command = / sbin / iptables -A INPUT -i eth0 -s%IP%-p tcp -dport 22 - j ACCEPT?
tcpflags = syn?
[closeSSH]?
sequence = 5000,4000,3000?
seq_timeout = 5?
command = / sbin / iptables -D INPUT -i eth0 -s%IP%-p tcp -dport 22 -j ACCEPT?
tcpflags = syn
12)刪除文本文件中的一行。有用的修復
ssh-keygen -R <the_offending_host>
在這種情況下,最好使用專用工具
13)通過ssh運行復雜的遠程shell cmds,不用轉義引號
ssh主機-l用戶$(<cmd.txt)
更簡單的方法。更便攜的版本:ssh主機-l用戶“`cat cmd.txt”“
14)通過一個命令通過SSH將MySQL數據庫復制到新服務器
mysqldump -add-drop-table -extended-insert -force -log-error = error.log -uUSER -pPASS OLD_DB_NAME |?ssh -C user @ newhost“mysql -uUSER -pPASS NEW_DB_NAME”
通過壓縮的SSH隧道轉儲MySQL數據庫并將其用作mysql的輸入 - 我認為這是將數據庫遷移到新服務器的最快和最好的方式!
15)刪除文本文件中的一行。用于修復“ssh主機密鑰更改”警告
sed -i 8d?/ .ssh / known_hosts
16)將你的ssh公鑰從一臺沒有ssh-copy-id的機器復制到一臺服務器上
cat?/ .ssh / id_rsa.pub |?ssh user @ machine“mkdir?/ .ssh;?貓>>?/ .ssh / authorized_keys“
如果您使用Mac OS X或其他不帶有ssh-copy-id的* nix變體,則這一行代碼將允許您將公鑰添加到遠程機器,以便隨后可以在沒有密碼。
17)實時ssh網絡吞吐量測試
是|?pv |?ssh $ host“cat> / dev / null”
通過ssh連接主機并顯示實時傳輸速度,將所有傳輸的數據導向/ dev / null?
需要安裝pv?
Debian:'apt-get install pv'Fedora?
:'yum install pv'(可能需要啟用'extras'存儲庫)
18)如何建立一個你可以重新連接的遠程Gnu屏幕會話
ssh -t user@some.domain.com / usr / bin / screen -xRR
在存在標簽式終端之前,人們一直在使用Gnu屏幕在單個文本終端中打開許多外殼。與ssh結合使用,您可以使用上述選項通過單個遠程連接擁有多個打開的shell。如果使用“Ctrl-a d”進行分離,或者ssh會話意外終止,則遠程shell中運行的所有進程將保持不受干擾,隨時可供您重新連接。其他有用的屏幕命令是“Ctrl-a c”(打開新shell)和“Ctrl-a a”(在shell之間交替)。閱讀此快速參考以獲取更多屏幕命令:http://aperiodic.net/screen/quick_reference
19)恢復大文件的scp
rsync -partial -progress -rsh = ssh $ file_source $ user @ $ host:$ destination_file
它可以使用rsync恢復失敗的安全副本(在通過vpn傳輸像db轉儲這樣的大文件時有用)。
它需要在兩臺主機上安裝rsync。
rsync -partial -progress -rsh = ssh $ file_source $ user @ $ host:$ destination_file local - > remote?
或
rsync -partial -progress -rsh = ssh $ user @ $ host:$ remote_file $ destination_file remote - > local
20)通過ssh w / wireshark遠程分析流量
ssh root@server.com'tshark -f“port!22”-w - '|?wireshark -k -i -
這使用tshark捕獲遠程計算機上的流量,通過ssh鏈接發送原始pcap數據,并將其顯示在wireshark中。按ctrl + C將停止捕獲,不幸的是關閉您的wireshark窗口。這可以通過將-c#傳遞給tshark來處理,只捕獲一定數量的數據包,或通過命名管道重定向數據,而不是直接從ssh傳輸到wireshark。我建議盡可能在tshark命令中進行過濾以節省帶寬。tshark可以用tcpdump替換:
ssh root@example.com tcpdump -w - 'port!22'|?wireshark -k -i -?
21)有一個ssh會話永遠打開
autossh -M50000 -t server.example.com'screen -raAd mysession'
打開一個永久開放的ssh會話,在切換WIFI節點時丟失互聯網連接的筆記本電腦非常棒。
22)更強大,更快,更強大的SSH客戶端
ssh -4 -C -c blowfish-cbc
我們強制IPv4,壓縮流,指定密碼流為Blowfish。我想你可以使用aes256-ctr以及cypher spec。當然,我忽略了諸如主控制會話之類的東西,并且可能無法在您的shell中使用這些會話,盡管這也會加快速度。
23)用cstream調節帶寬
tar -cj / backup |?cstream -t 777k |?ssh主機'tar -xj -C / backup'
這bzips一個文件夾,并通過網絡傳輸到“主機”在777k位/秒。
cstream可以做得更多,看看http://www.cons.org/cracauer/cstream.html#usage?
例如:
echo w00t,我733+ |?cstream -b1 -t2
24)一步將SSH公鑰轉移到另一臺機器上
SSH-凱基;?ssh-copy-id user @ host;?ssh user @ host
該命令序列允許簡單設置(gasp!)無密碼SSH登錄。要小心,就好像你已經在本地機器上的?/ .ssh目錄中有一個SSH密鑰對,那么ssh-keygen可能會覆蓋它們。ssh-copy-id將公鑰復制到遠程主機,并將其附加到遠程帳戶的?/ .ssh / authorized_keys文件中。在嘗試使用ssh時,如果您沒有為密鑰使用密碼,遠程shell會在調用ssh user @ host后不久出現。
25)將stdin復制到你的X11緩沖區
ssh user @ host cat / path / to / some / file |?XCLIP
你有沒有必要scp文件到你的工作機器,以便將其內容復制到郵件中?xclip可以幫助你。它將stdin復制到X11緩沖區,所以您只需中鍵單擊以粘貼該looong文件的內容:)
總結
以上是生活随笔為你收集整理的实现 SSH 无密码登录 、 ssh 常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 书英语词汇
- 下一篇: vista下文件夹拒绝访问的解决办法