SSH不对称密钥自动登入服务器

1、先在自己的电脑上创建密钥对

ssh-keygen -t rsa

Windows下生成SSH密钥

$ ssh-keygen -t rsa -C "youremail@example.com"

这时可以在主机A上看到生成的秘钥~/.ssh/idrsa 和公钥 ~/.ssh/ idrsa.pub

2、把公钥放传输到服务器上

第一步是以安装Ubuntu 22.04时创建的用户名和密码登入服务器。

我们用最优秀的跨平台SSH客户端,在windows store里直接下载

新建一个Host,配置如下:

新的服务器,用这条命令给root账户设置密码

sudo passwd root

然后切换到root账户登入

su root

去修改root用户的SSH公钥配置

cd /root
cd .ssh
vi authorized_keys

把自己的公钥贴到上述文件,保存后退出vi编辑器

wq!

上述一堆命令的效果图如下:

3、使用客户端工具免密密码登入

上述演示基于从ubuntu.com官方网站下载的iso映像,全新安装的Ubuntu 22.04服务器。如果不是这样的服务器环境,可能您还需要继续往下看:

4、修改ssh服务配置文件

sudo vi /etc/ssh/sshd_config

- 要检查的几个选项:

PermitRootLogin yes #允许root登录

PermitEmptyPasswords yes #允许空密码登录

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

5、重新启动SSH服务

service sshd start 开启ssh服务

service sshd stop 停止ssh服务

service sshd restart 重启ssh服务

6、SSH命令的两个重要开关

1)-i,用途是指定私钥的文件路径

2)-vT,用途是输出详细的信息

PS C:\Users\David> ssh -i X:\gitlab-runner\ssh\id_rsa great@proget.abcdefg.cn -vT
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to proget.abcdefg.cn [47.106.133.5] port 22.
debug1: Connection established.
debug1: identity file X:\\gitlab-runner\\ssh\\id_rsa type 0
debug1: identity file X:\\gitlab-runner\\ssh\\id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
debug1: compat_banner: match: OpenSSH_8.9p1 Ubuntu-3ubuntu0.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to proget.abcdefg.cn:22 as 'great'
debug1: load_hostkeys: fopen C:\\Users\\David/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ssh-ed25519 SHA256:g+AgPHqhDZhgIE0yiuMlkIEQfefGlSSO4jeWM8Ekd5A
debug1: load_hostkeys: fopen C:\\Users\\David/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
debug1: Host 'proget.abcdefg.cn' is known and matches the ED25519 host key.
debug1: Found key in C:\\Users\\David/.ssh/known_hosts:1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
debug1: Will attempt key: X:\\gitlab-runner\\ssh\\id_rsa RSA SHA256:6QNUIUX5zptZfoIHVWBJW8slxrzUsCwMojRe4vo3Fnk explicitdebug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>
debug1: kex_input_ext_info: publickey-hostbound@openssh.com (unrecognised)
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: X:\\gitlab-runner\\ssh\\id_rsa RSA SHA256:6QNUIUX5zptZfoIHVWBJW8slxrzUsCwMojRe4vo3Fnk explicit
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
great@proget.abcdefg.cn's password:
PS C:\Users\David>

7、远程服务器.ssh权限问题

远程服务器~/.ssh文件夹及其文件权限不对,包括

1、~./ssh/authorized_keys文件权限

2、~/.ssh文件夹权限

3、~/.ssh文件夹所有权

Solution

通过其它方式登录到远程服务器,如果是阿里云则可以在网页中通过验证之后打开一个终端,然后进行如下操作

7.1、更改文件所有权

$ chown -R your_user:your_group ~/.ssh 

//我用root登录,your_user是root

7.2、更改.ssh文件夹权限

$ chmod 700 ~/.ssh

7.3、更改.ssh/authorized_keys文件权限

$ chmod 600 ~/.ssh/authorized_keys

第7段是拷贝自这个作者:

作者:delta1037

链接:https://www.jianshu.com/p/14027e35b900

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

暂时总结这么多。

SSH不对称密钥自动登入服务器的更多相关文章

  1. 如何通过linux ssh远程linux不用输入密码登入

    如何通过一台linux ssh远程其他linux服务器时,不要输入密码,可以自动登入.提高远程效率,不用记忆各台服务器的密码. 工具/原料   ssh,ssh-keygen,scp 方法/步骤   首 ...

  2. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

  3. Ubuntu获取root 权限,开机自动登入root

    新机器获取root权限,只需要给root 增加密码: sudo passwd root 修改开机自动登入: #sudo gedit /etc/lightdm/lightdm.conf 修改参数: au ...

  4. python selenium 多账户自动登入163邮箱

    pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...

  5. 使用ssh公钥密钥自动登陆linux服务器

    转自:http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...

  6. [zz] 使用ssh公钥密钥自动登陆linux服务器

    目录 .生成密匙对 .拷贝公匙到远程机 .启动登陆代理 这种方法处理后每次需要运行命令:ssh-add ~/.ssh/id_dsa 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远 ...

  7. ssh自动登入

    公司的服务器在国外,所以测试的查看日志的时候需要测试机,然后继续ssh 非常不方便,所以编写一个简单的ssh登入脚本 #!/usr/bin/expectset timeout 3spawn ssh n ...

  8. ssh 使用密钥无法登入Linux系统

    今天测试密钥登入linux系统时 出现如下问题: root@compute01:~# ssh alicxxx@xxx.com -p -i alickicxxxxxxx.key @@@@@@@@@@@@ ...

  9. [整理]配置SSH密钥自动登录远程服务器

    原理: 公钥私钥匹配通过验证,允许访问服务器. 简单步骤: 1.在本地创建一对密钥 2.将公钥传到需要访问的服务器上 3.将公钥放入服务器的authorized_keys,确保访问时能通过验证 4.本 ...

  10. ssh连接远程主机免密登入

    核心思想: 1.本地主机生成公钥私钥,私钥自己存着,公钥传到远程主机.ssh文件夹下authorized_keys文件(默认是这个,用追加的方式) 2.本地连接远程主机,公私钥对上就可以免密登入了. ...

随机推荐

  1. SPECJVM2008 再学习

    SPECJVM2008 再学习 摘要 昨天的太水了 感觉今天有必要再水一点.. 存在的问题 默认进行启动 sunflow 必定过不去. 一般的解决办法要求进行重新编译 但是我不知道怎么下载源码... ...

  2. Redis IO多线程的简要测试结果

    Redis IO多线程的简要测试结果 摘要 最近想简单确认一下IO多线程的对吞吐量的提升情况. 正好手头有鲲鹏的机器, 所以想直接进行一下验证 顺便用一下4216 进行一下对比. 发现 在CPU核心比 ...

  3. Redis7.0.7的简单安装与学习

    Redis7.0.7的简单安装与学习 摘要 2022.12.18 世界杯决赛 另外是我感染奥密克戎第五天. 高烧已经没了,但是嗓子巨疼. 睡不着觉,肝胆学习一下最新的Redis7.0.7 第一部分安装 ...

  4. vue3动态路由的addRoute和removeRoute使用

    为什么需要有动态路由 有些时候,我们不同的身份角色,我们希望可以展示不同的菜单. 比如说:普通用户只有展示A菜单,管理员有A,B,C菜单 这个时候,我们就需要动态路由了! Vue2和vue3的区别 V ...

  5. Redis启用认证

    要在Redis中启用认证,您需要在Redis配置文件中设置requirepass指令.以下是步骤: 找到Redis配置文件.这通常是redis.conf,可能位于/etc/redis/或/etc/目录 ...

  6. 大规模语言LLaVA:多模态GPT-4智能助手,融合语言与视觉,满足用户复杂需求

    大规模语言LLaVA:多模态GPT-4智能助手,融合语言与视觉,满足用户复杂需求 一个面向多模式GPT-4级别能力构建的助手.它结合了自然语言处理和计算机视觉,为用户提供了强大的多模式交互和理解.LL ...

  7. powerDesigner 逆向工程 mysql 生成 PDM

     1. 信息补充说明 powerDesigner  16.5 mysql 5.6 主要内容:使用powerDesigner的逆向工程,将mysql中的数据库转换成PDM文件 所需资源: powerDe ...

  8. Docker从认识到实践再到底层原理(五)|Docker镜像

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...

  9. PVE上启用Intel核显的SR-IOV vGPU

    介绍 Intel SR-IOV vGPU是一种硬件虚拟化技术,它允许多个虚拟机共享单个物理GPU,而不会降低性能.SR-IOV定义了一种标准方法,通过将设备分区为多个虚拟功能来共享物理设备功能.每个虚 ...

  10. 教你用JavaScript获取大转盘

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个大转盘.当你难以抉择的时候不妨用这个案例来帮你做选择.通过编程实战我们可以学到按钮的 ...