Mac SSH使用config配置文件管理多个git账户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac SSH使用config配置文件管理多个git账户相关的知识,希望对你有一定的参考价值。

参考技术A

GitHub: ssh-keygen -t rsa -b 4096 -C "test_github@gmail.com" -f ~/.ssh/github_me_id_rsa
GitLab: ssh-keygen -t rsa -b 4096 -C "test_gitlab@gmail.com" -f ~/.ssh/gitlab_me_id_rsa

把“xxx.pub”公钥文件的完整内容粘贴到github、gitlab中设置公钥的地方保存即可

查看“~/.ssh/”目录中有无“config”文件,没有则 “touch config”命令或者“vim config(这个命令记得保存)” 创建该文件,然后编辑该文件(有配置文件的话在末尾新增即可):

配置文件使用‘Host’字段区分不同的配置段落

ssh -T <Host>: ssh -T me.github.com
它会查找并使用匹配‘Host’字段区域的配置

连接成功则提示如下:
Hi xxx(你的github用户名)! You\'ve successfully authenticated, but GitHub does not provide shell access.(【GitLab】:Welcome to GitLab, @xxx!)

到此为止,每次访问都会输入密钥的密码,因此需要将专属密钥添加到【ssh-agent】的高速缓存中:
ssh-add <密钥文件> : ssh-add ~/.ssh/github_me_id_rsa
如果密钥有密码的话,会提示输入密码

注:添加到【ssh-agent】也并非是永久性的,如果【ssh-agent】服务重启的话管理密钥的session也就不存在了

拿【GitHub】举例

原来:git clone git@github.com :xxx_yyy.git
现在:git clone git@me.github.com :xxx_yyy.git

现状:现有的项目已经在使用中。。。

mac终端ssh连接服务器 空闲的时候 连接断开

ssh_config详解(MAC OSX)

方法1:MAC客户端配置

配置“/etc/ssh/ssh_config”文件

“/etc/ssh/ssh_config” 文件是OpenSSH系统范围的配置文件,允许你通过设置不同的选项来改变客户端程序的运行方式。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词,用man命令查看帮助页(ssh (1))可以得到详细的列表。


编辑“ssh_config”文件

sudo -s     ( 启用超级用户 sudo -s 获得系统权限)

vi /etc/ssh/ssh_config

Host *   下面加入

ServerAliveInterval 60              

(按i编辑,保存是: Esc到命令模式, 敲冒号:, 再wq!(3个字符),就保存退出了, [w是保存,q是退出,可单用,!是强制]

 

(下面逐行说明的选项设置:
Host *
选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。

ForwardAgent no
“ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。

ForwardX11 no
“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。

RhostsAuthentication no
“RhostsAuthentication”设置是否使用基于rhosts的安全验证。

RhostsRSAAuthentication no
“RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。

RSAAuthentication yes
“RSAAuthentication”设置是否使用RSA算法进行安全验证。

PasswordAuthentication yes
“PasswordAuthentication”设置是否使用口令验证。

FallBackToRsh no
“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。

UseRsh no
“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。

BatchMode no
“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。

CheckHostIP yes
“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议???置为“yes”。

StrictHostKeyChecking no
“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。

IdentityFile ~/.ssh/identity
“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。

Port 22
“Port”设置连接到远程主机的端口。

Cipher blowfish
“Cipher”设置加密用的密码。

EscapeChar ~
“EscapeChar”设置escape字符。


方法二:服务端配置
配置“/etc/ssh/sshd_config”文件

linux系统server

在linux系统中使用ssh连接远程服务器时,可以使用-o的一个参数ServerAliveInterval来设置防止超时的时间。

比如:ssh -o serveraliveinterval=60 username@hostIP

服务器配置修改

修改ssh配置文件/etc/ssh/sshd_config,添加或者修改ClientAliveInterval为“ClientAliveInterval 60”。这个参数的是意思是每1分钟,服务器向客户端发一个消息,用于保持连接。保存后记得重启ssh服务。

修改过后,上面几个办法都可以让ssh保持连接,一直处于alive状态,不会因为没有操作而被服务器强制断线了。


“/etc/ssh/sshd_config”是OpenSSH的配置文件,允许设置选项改变这个daemon的运行。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词,用man命令查看帮助页(sshd (8))可以得到详细的列表。

编辑“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改变下面的参数:

# This is ssh server systemwide configuration file.
Port 22
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
ServerKeyBits 1024
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers admin

下面逐行说明上面的选项设置:

Port 22
“Port”设置sshd监听的端口号。

以上是关于Mac SSH使用config配置文件管理多个git账户的主要内容,如果未能解决你的问题,请参考以下文章

利用 ssh 的用户配置文件 config 管理 ssh 会话

利用ssh的用户配置文件config管理ssh会话

使用ssh config配置文件来管理ssh连接

mac终端ssh连接服务器 空闲的时候 连接断开

配置多个 git 账号的 ssh密钥

Mac下使用iterm2 SSH免密码登录