当前位置: 首页 > news >正文

ssh远程登录那些事

证书登录

密码登录不安全,可以使用证书登录。

服务端

sshd服务的配置文件/etc/ssh/sshd_config中,需要开启证书登录

PubkeyAuthentication yes

如果是root登录(不推荐),还需要保证root的ssh登录打开:

PermitRootLogin yes

另外,还有两个配置,跟登录有关。

一个是PasswordAuthentication,用于开启证书登录以后,是否还允许密码登录;

另外一个是AuthorizedKeysFile,用于配置证书登录的时候,在用户的什么文件里查找对应的证书,一般默认值是:.ssh/authorized_keys

客户端

客户端,即需要用来登录远程服务器的机器。这机器上需要先生成一对密钥:

ssh-keygen 

然后,把生成的.pub文件的内容,放入需要远程登录的SSH服务器的.ssh/authorized_keys文件里。

我们再使用ssh登录的时候,就会自动使用证书登录了。

私钥密码

我们使用ssh-keygen的时候,一般会要求输入密码,这是为了加密我们的私钥。

每次我们登录远程SSH服务端的时候,都需要输入这个密码,才能使用证书进行登录。

密码加密私钥

如果在生成证书的过程中,我们没有设置密码,也可以事后再加,方法是使用ssh-keygen-p参数。

比如,我们登录服务端的证书私钥为.ssh/id_rsa,我们需要给它设置密码,可以:

ssh-keygen -p -f .ssh/id_rsa

之后再登录服务端就必须输入密码了。

移除私钥密码

如果反过来,想把密码保护的私钥文件,去除密码,也同样是这个命令这个参数,方法就是执行

ssh-keygen -p -f [私钥路径]

命令之后,输入原密码,再设置密码直接回车,即置空,密码就被移除了。

临时解锁私钥

有的时候,我们既想私钥文件被密码保护,又想在当前的Session状态下,不用重复输入密码,那怎么办呢?

方法是使用ssh-add

ssh-add命令专门用户管理临时的解密私钥。

仍然以我们的私钥文件为.ssh/id_rsa为例。

我们可以执行:

ssh-add .ssh/id_rsa

之后,再当前登录状态下,再执行远程登录,就都不需要输入密码了。

管理临时私钥

管理临时私钥主要是ssh-add的三个参数:

  • ssh-add -l,显示当前解密的私钥
  • ssh-add -d [私钥名称],释放解密的私钥
  • ssh-add -D,释放所有解密的私钥

不同证书

当我们需要登录的主机,使用的证书不一样的时候,可以在.ssh/config中指定。

如:

host 192.168.56.101IdentityFile ~/.ssh/id_rsa1host 192.168.56.102  IdentityFile ~/.ssh/id_rsa2

其中,host字段可以使用空格添加多个,也支持通配符。

如:

host *.work.netIdentityFile ~/.ssh/id_workhost *.home.net 192.168.56.* IdentityFile ~/.ssh/id_rsa2

兼容老版本的openssh

为了在新的系统上(openssh版本很新),可以通过openssh登录到老的系统上去,需要做一些向下兼容。

我们当然可以改变系统的openssh设置,比如在/etc/ssh/ssh_config中添加

# add for ssh-rsa old openssh
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

但是,也可以在$HOME/.ssh/config中,只针对特定主机添加这种配置:

Host 192.168.58.110User rootPort 22HostKeyAlgorithms +ssh-rsaPubkeyAcceptedKeyTypes +ssh-rsa

之后,我们再通过ssh连接主机,仍然会返回一个错误:

ssh 192.168.58.110  
ssh_dispatch_run_fatal: Connection to 192.168.58.110 port 22: error in libcrypto

这是因为,虽然我们在openssh程序中已经启用了老的算法的支持了,但是openssh依赖的openssl库,即上面错误里显示的libcrypto,仍然不支持老的算法。

根据这篇文章里说的,我们可以设置一下安全策略。

即执行:

update-crypto-policies --set DEFAULT:SHA1

但是这样仍然改变了全局的配置。

为了安全,还有一个改变更小的方法,就是不执行上面的语句,但是在连接老的openssh之前,设置一个环境变量:

export OPENSSL_ENABLE_SHA1_SIGNATURES=1
http://www.dtcms.com/a/529563.html

相关文章:

  • IOT项目——电源入门系列-第一章
  • 上海品划做网站网站开发一般用哪个浏览器
  • Spring与JSR-330标准注解对比指南
  • GitHub等平台形成的开源文化正在重塑鸡腿肉
  • 网站ip地址范围网络上市场推广
  • 2025年江西省职业院校技能大赛“大数据应用与服务”竞赛样题
  • 排名好的手机网站建设电商软件平台开发
  • 万网网站建设万网网站建设建设银行钓鱼网站
  • 晨光文具网站建设策划书网站实时显示
  • 【Java高级编程】集合框架和泛型
  • 雅菲奥朗人工智能知识墙分享(二):『AI数据:人工智能时代的“数字燃料”——数据是AI的“第一生产力”』
  • 智能电网建设对就业市场有何影响?
  • 【08】C语言数据类型--字符类型
  • 张家界公司网站建设wordpress 新浪图片
  • 枣庄高端品牌网站建设案例微信上修改wordpress
  • 第十八讲(一) 三重积分
  • 怎么建设一个营销型网站博罗营销网站制作
  • 网站开发完整视频合肥网络推广有限公司
  • 第7章树和二叉树:二叉树遍历算法的应用
  • Marvell TX9190 Liquid-Cooled CPO Switch
  • 怎样做后端数据传输前端的网站asp汽车销售公司网站源码 4s店网站源码 汽车网站建设 完整无
  • oa网站建设推广吉林网站建设电话
  • 网站推广双鼎微信小程序可以做音乐网站吗
  • AI决策vs人工决策:效率的底层逻辑与选择边界
  • 合肥网站建设方案优化wordpress页面样板
  • 开展网站建设服务wordpress导航菜单均报404
  • 电视网站免费大全网站建设维护百家号
  • 人工智能与虚拟现实技术
  • Atlas 200I AI加速模块-修改和打包文件系统
  • Linux中ping时网络不可达