首页 > 其他分享 >针对不同主机使用不同 SSH Key

针对不同主机使用不同 SSH Key

时间:2023-06-11 18:36:26浏览次数:30  
标签:git key 不同 rsa Host SSH Key id ssh

考虑到安全性和便捷性,相信大部分同学都已经习惯了 SSH key 登录这种方式。有时候我们需要针对不同主机使用不同的 key,甚至针对同一个主机使用不同的 key,都可以通过 ~/.ssh/config 这个配置文件来实现。


默认情况下,ssh 会使用 ~/.ssh/id_rsa。这里,我通过 ssh-keygen 命令生成另外一个 key 用于 git.imququ.com 这个我自建的 gitlab 服务:

BASH
cd ~/.ssh/
ssh-keygen -t rsa -C "[email protected]"
 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/QuQu/.ssh/id_rsa): id_rsa_gitlab
...

接下来将 id_rsa_gitlab.pub 这个公钥文件内容添加到 gitlab 的后台(Mac 下可以使用 pbcopy 这个命令复制内容到剪切板,避免出现格式问题)。


pbcopy < id_rsa_gitlab.pub

现在我们来 git clone 项目试试:


BASH
git clone [email protected]:qgy18/ququblog2.git
 
Cloning into 'ququblog2'...
Permission denied (publickey).
fatal: Could not read from remote repository.

显然,提示没有权限。因为默认 ssh 根本不认我刚刚生成的 id_rsa_gitlab 这个私钥。我们需要做的是告诉 ssh 要用另外的 key 登录,打开 ~/.ssh/config(没有就新建一个),输入以下内容:


BASH
#gitlab@ququ
Host git.ququ
  HostName git.imququ.com
  Port 22
  User git
  IdentityFile ~/.ssh/id_rsa_gitlab

第一行是注释,第二行是指定如果 Host 匹配上了 git.ququ,就使用接下来几行指定的配置登录 ssh。HostName、Port、User、IdentityFile 分别是具体的主机、端口、用户名和私钥 key 的配置。需要注意的是 Host 可以跟 HostName 一样,也可以定义为你想要的任何内容,所以通常我用一个好记的短名称作为 Host。


将之前的「[email protected]」替换为「git.ququ」再来试试:


BASH
git clone git.ququ:qgy18/ququblog2.git
 
Cloning into 'ququblog2'...
remote: Counting objects: 1360, done.

嗯,这样就没问题了。同样,如果要给同一个主机指定不同的 key 文件也很简单:

BASH
Host host1
  HostName www.xxx.com
  User xx
  IdentityFile ~/.ssh/id_rsa_1
 
Host host2
  HostName www.xxx.com
  User xx
  IdentityFile ~/.ssh/id_rsa_2

这样全局任何地方通过 host1、host2 登录 ssh 时,都会自动选择不同的 key 文件。


所以,通过 ssh 的 config 文件可以进一步简化登录过程。实际上我可以通过「ssh q」登录我的 VPS;配置 SFTP 等服务时,也只用在 host 那一栏填一个「q」,用户名、端口什么的都不用填。因为我有这样的配置:

BASH
Host q
  HostName www.imququ.com
  Port 22
  User jerry
  IdentityFile ~/.ssh/id_rsa

由于参数是集中配置的,如果某天我要更换 ssh 服务的端口,只需要在这里改一次就可以了,十分方便。实际上,ssh config 的 Host 字段还支持通配符,有更高级的玩法,不过我暂时没这复杂的需求。这里有一份完整文档,以后有需要再研究。




--EOF--


标签:git,key,不同,rsa,Host,SSH,Key,id,ssh
From: https://blog.51cto.com/u_6186189/6458464

相关文章

  • 使用chatgpt根据openAI API key自定义关键词批量写文章
    使用chatgpt根据openAIAPIkey自定义关键词批量写文章使用方法:1.api.txt里放openaikey,每行一个,程序会随机使用一个KEY2.key.txt放关键词,根据关键词写文章。3.写好的文章会自动保存到wenzhang文件夹下。 写文章速度以来openaikey及本身网络速度。本视频录制采用1核1G机器运......
  • kali开启ssh端口连接xshell
    先记一下主要命令启动ssh服务:systemctlstartssh.servicenetstat-lnt:再次查看端口状态,可以看到22端口已经成功开启第一步编辑ssh文件 vi/etc/ssh/sshd_config 将其修改为第二步重启ssh/etc/init.d/sshrestart重启或者servicesshstart重启/etc/init.d/sshstatu......
  • Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
    我们知道两台Linux服务器机器之间如果使用ssh命令登录或scp/rsync命令传输文件每一次都需要输入用户名相对应的密码,如果要免密码,则需要对两台Linux服务器机器之间进行SSH互信。一.SSH介绍1.SSH互信原理虽然这是废话,也希望大家了解一下。SSH(SecureShell)是一种安全的传输协议,它可以......
  • Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnV
    Cassandra的数据存储结构Cassandra的数据模型是基于列族(ColumnFamily)的四维或五维模型。它借鉴了Amazon的Dynamo和Google'sBigTable的数据结构和功能特点,采用Memtable和SSTable的方式进行存储。在Cassandra写入数据之前,需要先记录日志(CommitLog),然后数据开始写......
  • NoSQL生态系统——类似Bigtable列存储,或者Dynamo的key存储(kv存储如BDB,结构化存储如red
    摘自:http://www.ituring.com.cn/article/4002#NoSQL系统的数据操作接口应该是非SQL类型的。但在NoSQL社区,NoSQL被赋予了更具有包容性的含义,其意为NotOnlySQL,即NoSQL提供了一种与传统关系型数据库不太一样的存储模式,这为开发者提供了在关系型数据库之外的另一种选择。在关联型的数......
  • 不同大小的缓冲区对 MD5 计算速度的影响
    最*需要在计算大文件的MD5值时显示进度,于是我写了如下的代码:publiclongLength{get;privateset;}publiclongPosition{get;privateset;}publicasyncTaskComputeMD5Async(stringfile,CancellationTokencancellationToken){usingvarfs=File.OpenR......
  • 数据库:SSH远程操作数据库实验
    SSH实验注册两台虚拟机,其中一台命名为Client,另一台命名为Server。并且首先更新软件,安装必需的vim和openssh-server软件:sudoapt-getupdatesudoapt-getinstallvimsudoapt-getinstallopenssh-server设置ssh:首先生成秘钥:cd~/.sshssh-keygen-trsa-C"[email protected].......
  • 【Linux】ssh常见问题汇总
    常见问题1--目录以及文件权限不对,一定要严格确保chmod700.sshchmod600.ssh/authorized_keys常见问题2--现在对安全要求严格的企业使用的rhel都是8,而8的SElinux安全性更高,因此在SElinux打开的情况下,必须正确设置.ssh的上下文为ssh_home_t。--也有其他网友有一样的问......
  • Docker创建无密码ssh容器
    需求希望创建一个container进行调试,使用ssh登陆无需密码。实现Dockerfile如下FROMubuntu:20.04RUNpasswd-droot&&apt-getupdate&&\DEBIAN_FRONTEND=noninteractiveapt-getinstall-yq\s6ssh&&mkdir/run/sshd&&mkdir-p/etc/s6/ss......
  • 使用ssh-keygen命令生成公私钥对
    使用`ssh-keygen`命令生成公私钥对的示例命令如下:ssh-keygen-trsa-b2048-C"[email protected]"这个命令将生成一个2048位的RSA公私钥对,并将公钥关联到指定的电子邮件地址。生成的私钥将保存在`~/.ssh/id_rsa`文件中,公钥将保存在`~/.ssh/id_rsa.pub`文件中。在命令......