2016-06-30 54 views
1

我的錯:我一直忙於學習其他linux的東西,所以我完全忽略了bash的威力。BASH IP地址標籤

我有很多系統可以遠程訪問非常簡單的操作。問題是我需要記住每個IP地址。他們很多。 。

在〜使用別名/ .bashrc中是一個選項:

alias ssh_customer1='ssh [email protected]' 
alias ssh_customer2='ssh [email protected]' 
alias copy_customer1='scp * [email protected]:/etc/example/' 
alias copy_customer2='scp * [email protected]:/etc/example/' 
alias get_customer1='scp [email protected]:/etc/example/* .' 
alias get_customer2='scp [email protected]:/etc/example/* .' 

但彈性最小。

另一種可能性是定義使用系統的名稱作爲參數的功能,但我不喜歡這樣的:

sshx('customer1') 
scpx('customer2') 

我寧願只需更換具有相應IP地址的標籤,而無需記住它,並使用標準命令:

ssh [email protected]_customer1 
scp [email protected]_customer2:/etc/example/* . 

這可能嗎?

+2

您可以使用'/ etc/hosts'來聲明IP的暱稱。另一種方法是配置您的DNS服務器和DHCP客戶端/服務器,以便每個主機通告其名稱。 – oliv

+0

是的,只是把它們放在你的主機文件中。 – 123

回答

4

設置一個~/.ssh/config文件:

$ cat ~/.ssh/config 
Host cust1 
    HostName 10.X.X.X 
    User root 
Host cust2 
    HostName 10.X.X.Y 
    User root 

現在你可以使用:

ssh cust1 

另一個很酷的事情是,你現在可以識別文件附加到每個服務器:

$ cat ~/.ssh/config 
Host cust1 
    HostName 10.X.X.X 
    User root 
    IdentityFile ~/.ssh/cust1.id_rsa 
Host cust2 
    HostName 10.X.X.Y 
    User root 
    IdentityFile ~/.ssh/cust2.id_rsa 

這將允許您使用ssh和scp而不使用密碼,假設密鑰沒有密碼或ssh-agent 用來。

+0

謝謝@andIrc,我不知道這種可能性! 很好解釋。 –

+0

@Alex我很高興能幫上忙。如果考慮使用身份文件,您還應該考慮運行ssh-agent,因爲它可以在您的身份文件上使用密碼,而無需在每次使用時重新輸入密碼。 :-) – andlrc

+0

太棒了!對於那個'IdentityFile'的東西+1。 –