1. 程式人生 > >ssh-config配置

ssh-config配置

之前遇到這樣的一個問題:我有兩個github賬號,一臺電腦上都要訪問這兩個賬號,都使用ssh key認證方式,該怎麼配置ssh?

這裡先說說ssh的配置。

ssh的配置檔案

ssh client有兩個配置檔案,/etc/ssh/ssh_config~/.ssh/config,前者是對所有使用者,後者是針對某個使用者,兩個檔案的格式是一樣的。

ssh配置檔案的格式

每一行是一個配置項,如下:

1
2
config value
config value1 value2

也可以使用=號:

1
2
config=value
config=value1 value2

空行和以#

開頭的行會被忽略;
所有的值是區分大小寫的,但引數名不區分。

示例

通常情況下使用ssh連線伺服器使用如下命令:

1
ssh username@server.com

這時會預設使用~/.ssh/id_rsa這個金鑰,如果想使用不同的金鑰則要:

1
ssh -i path/to/id_rsa username@server.com

如果不想每次都指定這些金鑰、使用者名稱、伺服器地址的話,可以在~/.ssh/config中配置,如下:

1
2
3
4
Host server1
	HostName server.com
	User username
	IdentifyFile path/to/id_rsa

這樣就可以簡單的使用以下命令:

1
ssh server1

其實就相當於server1是個別名,可以任意取名。

在來看看最開始提出的問題,有兩個github賬號,這時可以用ssh-keygen生成兩個ssh金鑰,~/.ssh/id_rsa1和~/.ssh/id_rsa2,~/.ssh/config,每個賬號一個,配置如下:

1
2
3
4
5
6
7
8
9
Host github-user1
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa1

Host github-user2
	HostName github.com
User git IdentityFile ~/.ssh/id_rsa2

使用git clone時就用如下命令:

1
2
git clone github-user1:user1/repo.git
git clone github-user2:user2/repo.git