Linux系列讲解 —— SSH登录

这篇具有很好参考价值的文章主要介绍了Linux系列讲解 —— SSH登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

讲解一下ssh远程登陆的基础知识。

0. 基本概念

SSH (Secure Shell)是一种安全的远程登录协议,旨在提供比传统的未加密的远程登录协议更好的安全性。SSH协议采用了客户端-服务器架构,通过建立安全信道实现客户端和服务器之间的通信。SSH协议有三个层次:传输层、用户身份验证层和连接层。其中传输层负责保障通信的安全性,用户身份验证层负责验证用户身份,连接层提供类似于终端会话的机制,支持命令行操作。

SSH协议的优点是可以提供加密的安全通信,减小被中间人攻击或密码被窃听的风险,同时还能够提供数据完整性和认证机制。SSH协议也有许多应用,例如远程登录、文件传输、安全拷贝、端口转发等。

对于我们使用者而言,不需要知道其中原理。只要知道SSH通信组成有两部分,分别为ssh客户端程序ssh服务端程序。连接之前,远程目标机器的ssh服务端程序要保持打开,然后本地主机使用ssh客户端程序发起连接请求,输入密码即可登陆成功。

1. 安装ssh程序

下面分别介绍一下linux和windows平台安装ssh的方法。

1.1 windows平台(Win10)

1.安装ssh的客户端和服务端
正常情况系统默认安装了ssh客户端,依具体情况而定。
ssh登录,linux,ssh,服务器

2. ssh服务的启动和关闭
调用cmd或powershell终端,然后按情况执行下面命令
开启服务:net start sshd
关闭服务:net stop sshd

1.2 Linux平台(Ubuntu18.04)

1.安装ssh的客户端和服务端
正常情况系统默认安装了ssh客户端,依具体情况而定。

sudo apt install openssh-server
sudo apt install openssh-client

2.开启服务和关闭服务

#启动服务
sudo systemctl start ssh

#关闭服务
sudo systemctl stop ssh

#重启服务
sudo systemctl restart ssh

3.查看服务状态

sudo systemctl status sshd

开启状态:
ssh登录,linux,ssh,服务器

关闭状态:
ssh登录,linux,ssh,服务器

2. 密码方式远程登录

无论是linux还是windows系统,使用ssh客户端远程登录的命令格式都是ssh 用户名@ip地址。已知远程机器里注册好了账户sun,并设置好了密码。登录实例如下:

fan@pc:~$ ssh sun@192.168.1.10
sun@192.168.1.10's password: 
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-146-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
...
Last login: Mon Apr 24 18:50:03 2023 from 172.32.1.76
sun@pc:~$ 

登录成功后,就可以通过该账户(sun)进行命令行操作这台远程机器了。

3. 密钥方式远程登录

其实ssh默认是使用密钥登录的,密钥登录的一个优点就是登录的时候不需要输入密码,其原理大概就是登录的时候验证密钥和公钥是否匹配,每个密钥和公钥之间都是唯一匹配的。下面具体说一下准备工作:

3.1 生成私钥公钥对

在本地机器上执行命令ssh-keygen -t rsa -C “邮箱”,例如:
ssh登录,linux,ssh,服务器

上面执行完之后,会在/home/fan/.ssh/路径下生成id_rsa和id_rsa.pub文件。其中id_rsa为记录私钥的文件,id_rsa.pub为记录公钥的文件。

3.2 将公钥复制到远程机器

将上一步生成的id_rsa.pub文件内容拷贝追加到远程机器的/home/用户名/.ssh/authorized_keys中即可。

3.3 尝试ssh远程登录

上面两步做完,执行ssh登录命令,正常情况应该是不需要密码就能连接上了。例:

fan@pc:~$ ssh sun@192.168.1.10

从原理角度讲,每个私钥和公钥都是可以放到多个机器上的,每个私钥(公钥)都有唯一匹配的公钥(私钥)。不过从安全性来讲肯定不建议这么做。

4. 常见问题

4.1 sun@192.168.1.21: Permission denied (publickey).

这个问题是出现在使用git拉取代码的时候,之前一直都是好用的。后来是由于ubuntu升级到22.04,导致ssh也升级到OpenSSH_8.9p1。据官方说这个版本的ssh默认不使用rsa的算法认证,而本地机器与服务器直接一直用的是rsa加密的key,所以才报了这个问题。

解决方法: 在/etc/ssh/ssh_config中加入下面这句话开启rsa算法认证

PubkeyAcceptedAlgorithms +ssh-rsa

4.2 Received disconnect from 192.168.1.21 port 22:2: Too many authentication failures

用ssh连接远程机器时,报了上面的错误。这个是由于我本地创建了很多对密钥,连接的时候验证私钥和公钥次数超过最大验证次数,导致了这个问题。

解决方法1(推荐):
将远程机器最大的验证次数调高,编辑远程机器中的/etc/ssh/sshd_config文件,追加如下内容:

# 这个次数可以依照具体情况进行调整
MaxAuthTries 10

然后重启一下远程机器的sshd服务,重启命令可以看上面 1. 安装ssh程序

解决方法2:
连接的时候使用选项Pubkeyauthentication,这样就此次登录就不会用密钥验证登录的方式而变为密码登录方式。

ssh pan@192.168.1.10 -o Pubkeyauthentication=no

解决方法3:
如果想永久的设置不使用密钥验证登录。可以直接编辑/etc/ssh/ssh_config文件,添加PubkeyAuthentication no即可。

注意上面的sshd_config和ssh_config不要弄混淆。sshd_config是服务端程序配置文件,ssh_config是客户端程序配置文件。文章来源地址https://www.toymoban.com/news/detail-758381.html

到了这里,关于Linux系列讲解 —— SSH登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)

    我们知道两台Linux服务器机器之间如果使用ssh命令登录或scp/rsync命令传输文件每一次都需要输入用户名相对应的密码,如果要免密码,则需要对两台Linux服务器机器之间进行SSH互信。 虽然这是废话,也希望大家了解一下。 SSH(Secure Shell)是一种安全的传输协议,它可以让Lin

    2024年02月09日
    浏览(59)
  • 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录

    本文基于Linux上CentOS 7版本配合Xshell 7进行演示 目录 一.SSH简介 1.介绍 2.工作流程 二.具体配置免密步骤 1.配置前准备工作 2.正式配置过程 三.在服务器端配置SSH远程黑白名单 1.配置文件/etc/ssh/sshd_config部分参数解析 2.配置远程登录黑白名单 SSH用于计算机之间的加密登录,是一类

    2024年02月22日
    浏览(52)
  • Xshell “所选的用户密钥未在远程主机上注册,请再试一次”SSH 登录远程linux服务器(良心整理)

    这个问题真的要把我逼疯了,为什么呢? 为了解决这个问题,我搜遍了CSDN、知乎、简书上的解决方案,CSDN上的回答真的是水文太多,相互抄,抄就抄吧,只抄一半。这让真正想解决问题的人走了太多的弯路。 也不知道是谁写的原文,可能作者解决了,但是写的很不清楚,也

    2023年04月15日
    浏览(44)
  • Linux系列:开发环境搭建:ubuntu图形界面安装samba服务器、SSH使用、mount -t cifs 挂载windows共享目录方法与问题解决

    samba一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 通常linux开发环境要和windows平台进行文件交互,使用samba进行文件夹共享,这样会给开发带来很大的便利性,samba安装很简单,下面介绍一下在ubunt

    2024年02月21日
    浏览(68)
  • Linux: 使用 ssh 连接其他服务器

    通过ifconfig 查看要连接的服务器地址: 输入要连接的服务器密码: 连接服务器成功:

    2024年02月11日
    浏览(49)
  • IDEA实现ssh远程连接本地Linux服务器

    本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接,然后实现远程Linux环境进行开发。 IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发

    2024年02月22日
    浏览(52)
  • 头歌实验10-3:Linux 远程联机服务(三)- SSH服务器

    上答案 还是下载 上答案 上答案 我是改的判定文件 键盘输入ggdG 键盘输入i 点击[Esc] 键盘输入 :wq

    2024年02月03日
    浏览(42)
  • 【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

    目录 一、SSH基础 1、什么是ssh服务器 2、对比一下ssh协议与telnet协议 3、常见的底层为ssh协议的软件: 4、拓展 二、SSH软件学习 1、ssh服务软件学习  2、sshd公钥传输的原理: 3、ssh命令学习: 4、学习解读sshd服务配置文件: 三、ssh服务的应用 1、使用密钥对免密码登录 第一步

    2024年02月04日
    浏览(52)
  • Linux云服务器限制ip进行ssh远程连接

    对Linux云服务器限制IP进行SSH远程连接的原因主要有以下几点: 增加安全性:SSH是一种加密的网络传输协议,可以保护数据的机密性和完整性。通过限制SSH连接的IP地址,可以防止未经授权的访问和数据泄露。只有拥有访问权限的IP地址才能进行SSH连接,从而增加了服务器的安

    2024年02月03日
    浏览(62)
  • 使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)

    目录 前言 基本使用教程 新建远程连接 连接主机 自定义命令 路由追踪 后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是

    2024年04月16日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包