一、SSH远程终端连接工具

1、SSH简介

SSH是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明 文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH 协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获 得推广,目前已经成为Linux系统的标准配置。

2、SSH登录原理

也就是客户端先向服务端发送登录请求;客户端收到请求后发送自己的公钥;客户端收到公钥后将所有登录信息加密后传送到服务端进行登录;服务端此时已经收到请求了,它需要客户端使用私钥解密登录信息,确定是用户本人,验证成功后才允许登录成功。

3、SSH结构

SSH服务由服务端软件OpenSSH(openssl)和客户端(常见的有SSH);

SecureCRT,Putty,xshell组成,SSH服务默认使用22端口提供服务,它有两个不兼容的SSH协议版本,分别是1.x和2.x

下面我们看下服务端上的ssh相关软件。

[root@keepalived-master ~]# rpm -qa | egrep "openss*"
openssl-libs-1.0.2k-21.el7_9.x86_64
openssl-1.0.2k-21.el7_9.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssl-devel-1.0.2k-21.el7_9.x86_64
  • OpenSSH同时支持SSH1.x和2.x。用SSH 2.x的客户端程序不能连接到SSH 1.x的 服务程序上。

  • SSH服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连 接请求。SSH服务端的进程名为sshd,负责实时监听远程SSH客户端的连接请 求,并进行处理,一般包括公共密钥认证,密钥交换,对称密钥加密和非安全连 接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之一。

  • ssh客户端包含ssh以及像scp(远程拷贝),slogin(远程登录),sftp(安全 FTP文件传输)等应用程序。

  • ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务 端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送 密钥发回给客户端,自此连接建立。


一般来说,每个用户都会在对应的家目录下生成一个 .ssh 文件夹,如 tinychen 用 户则为/home/tinychen/.ssh ,而 root 用户则为 /root/.ssh 。如果是手动创建 的 .ssh 文件夹,还需要注意权限问题。一般来说 .ssh 文件夹的权限为700,私钥为 600,公钥为644。

[root@NAT1 ~]# ls -lA | grep ssh
-rw-------. 1 root root       35 Dec 16 17:38 .lesshst
drwx------. 2 root root       25 Dec  2 09:35 .ssh
[root@NAT1 ~]# cd .ssh
[root@NAT1 .ssh]# ls -l
total 4
-rw-r--r--. 1 root root 354 Dec 14 21:33 known_hosts

二、SSH基本用法

1、语法 :

ssh -p 22 user@host

2、参数:

-p:指定端口号。

user:登录的用户名。

host:登录的主机。

默认的端口号为22,当端口号为22的时候,可以省略-p 22,直接使用如下方式:

ssh user@host
# “@”:前边为用户名,如果用当前用户连接,可以不指定用户名
# “@”:后面为要连接的服务器的IP

此外,如果本地正在使用的用户名与远程登录的用户名一致,登录用户名也是可以省略的,即如下:

ssh host

3、举例:

我们登录一个普通用户tom:

也就是我在A上使用普通用户tom登录了,如果我要在A上登录B上的普通用户tom,则可以直接输入IP号;但我要是在A上使用普通用户tom登录了,我要在A上登录B上的超级用户root,则要输入用户名@IP号。


当第一次SSH连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts(多个密 钥)


第一次远程登录,会出现高亮显示部分,因为要将密钥添加到本地的密钥文件中;

第二次远程登录,就不会出现高亮显示部分,因为密钥已经存在中;


如果连接不上,报错字符串对应的可能问题:

1,no route to host 可能为防火墙影响

2,Connection refused可能为防火墙,Connection refused 还可能是连接的对端 服务没开或者端口改变了。

三、ssh服务认证类型

1、基于口令认证

基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐 号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。此时,联机过程中所有传输的数据都是加密的。

2、基于密钥认证

优点:不用输入密码,也就是免密登录

首先在客户端生成一对密钥 ;使用默认算法则不需要加-t

将客户端的公钥传到服务器端

测试

四、ssh服务常见配置

SSH服务的配置文件为/etc/ssh/sshd_config

1、修改默认端口

通过看配置文件发现ssh服务的默认端口是22,很多时候我们的服务器被不是被人针 对了,而是对方在扫一个网段中开启22端口的机器,你的机器密码又是很简单的 111111之类的,你不被黑谁被黑,所以我们要把默认端口改了,这样就不容易被人 扫出来恶意了。

步骤:

①修改配置并重启服务

将端口改为2201

②使用22端口连接

显示连接拒绝

③使用2201端口进行连接

显示可以连接


我们把默认端口改为2201,修改端口后要记得重启服务systemctl restart sshd;

(注意改的这个端口一定不能占用别的服务的默认端口,以免别的服务启动不起来)

注意:

如果按以上步骤不能使用新端口进行连接,可能是没有关防火墙和selinux服务;


2、禁止root登录

root在我们系统中是一个特殊的存在,他是系统管理员,也就意味着他在系统中可以 为所欲为,所以它也是我们要特别关注的对象,我们可以在一般操作中用普通用户操 作,在有需要修改一些系统设置的时候再从普通用户切换到root用户,这样可以最大 限度的避免因为误操作而对系统造成破坏,同时也可以避免黑客使用root用户名来暴 力破解密码登录系统。

步骤:

①进入文件改配

将yes改为no

②改完重启服务

③查看效果

root用户权限被拒绝

登录普通用户:

登录成功;

3、限制ssh监听的IP

这个适用于服务器有多个IP,这样我们就可以只监听内网IP,这样就只能用在同一个 局域网的机器去连接,而我们只需要让在同一个服务器的另一台机器监听在外网,这 样就可以实现在外网也访问服务器了,方法如下:

步骤:

①添加一个内网网卡,并重启虚拟机;

ip a查看,多了一个内外网卡:

①修改配置并重启服务

仅限192.168.91.140去连接ssh

③退出外网ip

退出外网ip重新用外网ip连,发现连接不上;

因为之前是通过外网ip192.168.42.28连的,现在将监听ip改成了内外192.168.91.140,所以外网ip已经连不上了;

使用内网ip连接:

4、禁止使用密码登录

在前面我们说过使用key认证登录的,这是一种比较安全的登录方式,所以为了提高 安全性我们可以通过这种方式来登录服务器,再禁止使用密码登录使用key认证登录 我已经说过了,在这里就说下如何禁止使用密码登录,也只需要修改一下配置文件就 可以了,如下:

步骤 :

①修改配置并重启服务

这个时候我们是无法用密码登录系统的

而我们需要传公钥就得要密码这是很矛盾的,所以需要我们提前把公钥传给服务器, 或者临时开启密码登录,然后就能实现登录了

五、常见配置总结

1、常见的SSH服务器监听的选项如下:

1 Port 22 //监听的端口号为22
2 Protocol 2 //使用SSH V2协议
3 ListenAdderss 0.0.0.0 //监听的地址为所有的地址
4 UserDNS no //禁止DNS反向解析 建议用no,不需要对DNS进行反向解
析,可以加快ssh连接速度。

2、常见用户登录控制选项如下 :

PermitRootLogin no // 禁止root用户登录
PermitEmptyPasswords no // 禁止空密码用户登录 一旦启用了
PermitEmptyPasswords yes,那么所有无密码的用户也就可以远程登录了,并且还是
免密码的方式。
LoginGraceTime 2m // 登录验证时间为2分钟
MaxAuthTries 6 // 最大重试次数6次
AllowUsers steven // 只允许steven用户登录
DenyUsers steven // 不允许登录用户 steven
MaxSessions // 最大终端会话个数

3、常见登录验证方式如下:

1 PasswordAuthentication yes //启用密码验证
2 PubkeyAuthentication yes //启用密匙验证
3 AuthorsizedKeysFile .ssh/authorized_keys //指定公钥数据库文件

六、ssh客户端附带的远程拷贝scp命令

scp基本语法:scp -secure copy

每次都是全量拷贝,增量拷贝用rsync

#推:PUSH
scp -P22 -r -p /tmp/chensiqi root@172.16.1.41:/tmp
#拉:PULL
scp -P22 -rp root@172.16.1.41:/tmp/chensiqi /opt/

scp为远程拷贝文件或目录的命令

-P(大写):接端口,默认22
-r:递归,表示拷贝目录
-p:表示在拷贝前后保持文件或目录属性
-l limit:限制速度

举例:

PUSH将文件拷给别人

PULL从别人那拷走文件


scp知识小结

1,scp是加密的远程拷贝,而cp仅为本地拷贝

2,可以把数据从一台机器推送到另一台机器,也可以从其他服务器把数据拉回到本 地执行命令的服务器

3,每次都是全量完整拷贝,因此,效率不高,适合第一次拷贝用,如果需要增量拷 贝,用rsync

4、一定要加文件存放路径


七、知识小结

1)SSH是安全的加密协议,用于远程连接Linux服务器。

2)SSH默认端口是22,安全协议版本SSH2,除了2之外还有SSH1(有漏洞).

3)SSH服务端主要包含两个服务功能SSH远程连接和SFTP服务。

4)Linux SSH 客户端包含ssh远程连接命令,以及远程拷贝scp命令等。

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)相关推荐

  1. Linux远程拷贝scp命令

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  2. Linux 光盘 远程拷贝,Linux远程拷贝scp命令

    今天要从admin服务器将测试上修正content和image_count后的数据库更新到dz服务器. 首先需要备份数据库,使用mysqldump命令 整表全部备份:    mysqldump -u ...

  3. 39.SSH远程终端连接工具

    目录 1.SSH简介: 2.SSH登录原理: 3.SSH结构: 4.SSH基本用法: 5.SSH服务认证类型: (2)基于密钥认证: 6.SSH服务常见配置: (1)修改默认端口: (2)禁止 roo ...

  4. Linux常用命令(一) —— 开关机命令shutdown、远程登录命令ssh、远程拷贝文件命令scp

            目录 1.关机/重启命令 shutdown 2.远程登录命令 ssh 3.远程拷贝文件命令 scp 1.关机/重启命令 shutdown (1) 基本格式 直接使用 shutdown ...

  5. 【linux系统编程】远程登录工具ssh | 跨主机远程拷贝scp

    远程登录工具ssh && 跨主机远程拷贝scp 正文开始@Assassin 目录: 远程登录工具ssh && 跨主机远程拷贝scp 1. ssh简介: 2. ssh基本 ...

  6. linux运维笔记:ssh服务认证类型

    linux运维笔记:ssh服务认证类型 从SSH客户端来看,SSH服务主要提供两种级别的安全验证,具体级别如下: 1-基于口令的安全验证: 基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务 ...

  7. 常用Linux的ssh远程终端连接工具

    1 putty 说明 putty是最简单的SSH工具,无需安装,支持多系统版本,下载后就可以直接使用. 优点: 1.免费 2.免安装 缺点: 1.不支持标签模式: 2.默认设置不友好,很多功能都需要额 ...

  8. linux rsa登录改密码登录_LINUX中RSA认证登录SSH(不需要输入密码登录)2种方法

    方法一, 有的时候经常需要登录ssh,每次都需要输入密码,会比较繁琐.所以设置了一下使用RSA公钥认证的方式登录Linux. 首先需要在服务器端设置/etc/ssh/sshd_config # vim ...

  9. linux实用技巧:从另一台机子上拷贝文件到本机,从本机拷贝文件到另一台机子(远程拷贝scp)

    需求 远程拷贝文件 原理 使用scp,类似传输方式有:ftp,sftp,ssh等等. scp能显示名称.已传输百分比.总大小.当前速率.预计剩余时间. 使用方式 1.从本机拷贝到远程机上:    &q ...

最新文章

  1. mysql二: 常用命令
  2. 儿童吹泡泡水简单配方_儿童吹泡泡水简单配方[组图]
  3. VTK:Filtering之ImplicitBoolean
  4. bufg和bufgp_如何将自己写的verilog模块封装成IP核(一)
  5. matlab cell向量匹配向量,根据2个cell格式数据中的某二列进行匹配并合并
  6. Docker上部署GitLab服务器
  7. 11G新特性 -- 分区表和增量统计信息
  8. 深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)
  9. MDM之Goodness分析报告
  10. IIS7安装URLReWrite的妙用
  11. Java SE 和 Java EE 的区别
  12. 织梦首页php打开慢,DEDECMS网站打开速度慢解决方法
  13. 使用ZYNQ实现单LUT内容的动态修改(一)PL端OOC设计流程
  14. Linux虚拟机下WWW(HTTP)服务器的搭建与使用(详细)
  15. 【设备管理系统】-部署到正式环境
  16. geotools中等值面的生成与OL3中的展示
  17. 2016届360公司PHP服务端开发笔试和面试之所得所感
  18. 01背包,完全背包的区别
  19. 基于嵌入式linux的freetype矢量字体简单显示的实现
  20. 梅森素数、猜年龄、啤酒饮料、武功秘籍、调和级数、李白打酒、猜字母、扩散、三升序列、寻找2020

热门文章

  1. 互动白板 + 动态 PPT + RTC + 回放 Demo
  2. 我爱记单词小程序设计与制作
  3. 什么是测试即服务?(TaaS)
  4. 【通信协议】UART、RS232、RS485、I2C、SPI、CAN
  5. 三支一扶是什么?和事业单位比哪个好?
  6. stata F值缺失_stata操作问题实录
  7. R语言删除/替换字符串中的标点符号/字母/数据的方法
  8. Springboot项目中使用jasypt给配置文件中密码加密
  9. ML—AdaBoost(二)—MATLAB代码
  10. 北京市住建委:明确智慧工地的做法内容和认定关键点,筑智建助力工程行业全面数字化