ssh登录的调试方法和常见问题

2024-09-01 07:32

本文主要是介绍ssh登录的调试方法和常见问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ssh登录服务器是程序猿日常生活必不可少的一部分,也时不时的会遇到自己配置ssh登录的问题,拿日常使用的git来讲,不管使用github也好,还是自己搭建的gitlab等等,如果不能很好的理解ssh的原理,极容易遇到各种问题。这篇文章就尝试向大家简单讲解下ssh的原理、调试方式和常见问题。这里要讲的主要是免密码登录,也就是使用密钥登录的方式。

ssh基本原理

ssh密钥登录的原理简单来讲就是,你自己有一把钥匙和锁(私钥和公钥),服务器认可你这把锁孔,并把它装在了门上(服务器authorized_keys中),之后你就拿着这把钥匙就可以开门了。如果你有好多把钥匙,那么你得为每个门指定用哪个钥匙,在~/.ssh/config中配置即可。钥匙和锁的比喻虽然不是很恰当,但可以这么理解,容易记忆:)关于ssh的详情,大家可以参考SSH原理与运用。

总结下来,ssh密钥登录就下面3个步骤:

  1. 生成密钥对,执行如下命令,回车,可以自定义密钥名字,比如mykey,后面你会得到mykey和mykey.pub,前者是私钥(钥匙),后者是公钥(锁)。

    ssh-keygen -t rsa
    
  2. 将公钥交给服务器。你肯定是把锁给服务器,如果你把钥匙给服务器,是不是不太对??好多新手在这个问题上都会犯糊涂。这一步只要确保服务器端~/.ssh/authorized_key中有这个公钥就可以了,设置方式多样,不细说。

  3. 在本地配置服务器和密钥绑定,配置文件为~/.ssh/config中,如下:

    Host github.comIdentityFile ~/.ssh/mykeyUser git
    

当然你也可以在命令行指定使用哪个密钥,但这不是麻烦一些吗?!

ssh -i [path to private key] git@github.com

接下来,你应可以使用密钥登录服务器,如果还不行,你得看看下面的调试大法了。

ssh调试大法

发话不多说,直接上大法。

  1. 客户端调试

    ssh -vvv git@github.com
    

    是不是有一堆调试信息输出?!快去看看连接时候用的私钥对不对!

  2. 服务端调试

    /usr/sbin/sshd -d -p 2222
    

    在客户端去连接这个新端口

    ssh -vvv host -p 2222
    

此时两边都有日志输出,啥问题都能看到了!!

ssh常见问题

其实有了上面的调试大法,所有问题都能迎刃而解了,这里只记录下我碰到的一个问题。

问题描述

为新同事建立一个服务器登录帐号,使用如下命令:

useradd -d /home/test test

然后将其公钥放进 /home/test/.ssh/authorized_keys 中,之后test用户却无法登录服务器。

问题解决

首先,使用客户端调试大法,任何异常都没有发现,使用的私钥也是正确的,但是却无法连接。

接下来就服务端调试大法,发现异常,说是test用户不可用,处于锁定状态。

问题找到,原来直接创建用户后,如果不给它设定密码,用户就是锁定状态,无法使用。用户状态可以通过以下命令查看。

passwd -S test # 查看用户状态
passwd -l test # 锁定用户
passwd -u test # 激活用户

小结

出了问题不可怕,可怕的是没有定位问题的方法,想想马航搜救,东一头西一头,好可怕哦~

以后ssh登录遇到问题可以自己解决了吧?!不用谢!

这篇关于ssh登录的调试方法和常见问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126315

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat