SSH

常用远程连接软件

  • Putty:PuTTY为一开放源代码软件,只有500多k,小巧轻便,但功能单一

  • SecureCRT:SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。缺点是颜色方案不符合大众习惯

  • XShell:Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。缺点:收费

  • MobaXterm:功能强大且免费

SSH

概述

  • SSH是一种网络协议,用于计算机之间的加密登录。用户可以从本地计算机,使用SSH协议远程登录另一台计算机。

  • sshd服务该服务基于SSH协议,用于远程连接,服务随系统自动安装

  • sshd服务

    • 22端口
    • TCP协议
  • 基于C/S架构,客户端ssh,服务端openssh

加密算法

对称加密算法(DES)

  • 发送方使用密钥明文数据加密成密文,发送出去

  • 接收方收到密文后,使用同一个密钥将密文解密成明文

非对称加密算法(RSA)

  • 公钥跟私钥一一对应,公钥可公开,私钥自己私有
  • 接收方将公钥发给发送方
  • 发送方使用接收方发送过来的公钥明文数据加密成密文,发送出去
  • 接收方收到密文后,使用自己本地留存的私钥将密文解密成明文

DES&RSA比较

比较项 对称加密 非对称加密
密钥 相同 不同,但有对应关系
加密速度 较快 较慢
数据传输速度 较快 较慢
安全性 较低 较高

SSH认证

基于用户名密码认证

原理
  • 客户端向服务端发起一个登录请求

  • 服务端将自己的公钥发送给客户端

  • 客户端使用服务端发过来的公钥将自己的密码加密并且发送给SSH服务端

  • 服务端收到客户端发过来的加密密码后使用本地留存的私钥进行解密

  • 服务端将解密出来的密码和/etc/shadow文件里的用户密码对比认证

  • 服务端认证成功,则返回登录成功结果,并发送一个随机会话口令给客户端,该口令用于后面两台主机进行数据传输的一个临时加密会话口令

远程连接
获取服务端的ip
[root@server ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:76:f9:7d brd ff:ff:ff:ff:ff:ffinet 192.168.226.10/24 brd 192.168.226.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::1b78:bfb3:4567:b45c/64 scope link noprefixroute valid_lft forever preferred_lft forever
ip地址为192.168.226.10输入设置的密码即可登录
[root@client ~]# ssh root@192.168.226.10
root@192.168.226.20's password:
Last failed login: Sat Aug 21 15:46:55 CST 2021 from node1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Sat Aug 21 15:35:38 2021 from 192.168.226.1

基于密钥对认证

原理
  • 在客户端生成一个密钥对(公钥和私钥)
  • 客户端将公钥发给服务端,服务端将其保存在~/.ssh/authorized_keys
  • 客户端发起向服务端发起一个登录请求,服务端比对公钥(再次发来的公钥与保存在~/.ssh/authorized_keys中的公钥是否一致)
  • 比对一致后,服务端会生成随机字符串,再通过客户端发来的公钥加密
  • 服务端将加密后的字符串发送给客户端
  • 客户端收到后,通过本地私钥解密,然后将解密后的字符串发回非服务端
  • 服务端比对字符串,验证与生成的字符串是否一致
  • 一致,即可登录成功能
免密登录
客户端主机中生成“密钥对”
[root@client ~]# ssh-keygen  #一直回车即可
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:olnJ6qKrHOywFyCOr3elrSjJewf+Tbwn4CG1zNJS1+8 root@client
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|        .        |
|o    + o .       |
|+.  * B S .      |
|o..= %o.   .     |
|o=..X+oo  .      |
|*o*=oo+... E     |
|B@+o=o oo        |
+----[SHA256]-----+
[root@client ~]# ls /root/.ssh/
id_rsa  id_rsa.pub
id_rsa私钥文件
id_rsa.pub公钥文件(public)将公钥文件传送至远程主机(如果默认端口更改,需要-p指定端口号)
[root@client ~]# ssh-copy-id root@192.168.226.20
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.226.20 (192.168.226.20)' can't be established.
ECDSA key fingerprint is SHA256:+RvxL8ZDWnyO030Z5rOfjBuJaOG1yFvD9ieOY9uzWBA.
ECDSA key fingerprint is MD5:d2:a2:8c:c6:60:15:46:9b:09:75:ce:3f:e1:ea:6e:aa.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.226.20's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.226.20'"
and check to make sure that only the key(s) you wanted were added.[root@server ~]# ls /root/.ssh/
authorized_keys <--客户端发来的公钥文件也可以先在远程主机上创建~/.ssh/authorized_keys文件,然后把客户端公钥文件里面的内容复制到该文件内

~/.ssh : 700
~/.ssh/authorized_keys : 600

这两个文件的权限不要随意修改,否则可能导致免密失败

SSH服务搭建

为安全考虑,有如下要求:

  • 禁止root远程登录
  • sshd服务不允许使用默认22端口,防止自动脚本攻击
  • 客户端用户的账号密码使用专业工具随机生成
准备环境
[root@server ~]# systemctl stop firewalld.service
[root@server ~]# systemctl disable firewalld.service
[root@server ~]# setenforce 0
setenforce: SELinux is disabled
[root@server ~]# sed -i 's/enforced/disabled/' /etc/selinux/config 安装openssh,默认已安装(此步骤可忽略)
[root@server ~]# yum install -y openssh
[root@server ~]# rpm -ql openssh-server 查看生成了哪些服务端文件
/etc/pam.d/sshd
/etc/ssh/sshd_config 主配置文件
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd-keygen.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib64/fipscheck/sshd.hmac
/usr/libexec/openssh/sftp-server
/usr/sbin/sshd
/usr/sbin/sshd-keygen 用于生成公钥和私钥
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz 配置文件的帮助信息
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd
[root@server ~]# rpm -ql openssh-clients  查看生成了哪些客户端文件
/etc/ssh/ssh_config
/usr/bin/scp
/usr/bin/sftp
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan
/usr/lib64/fipscheck/ssh.hmac
/usr/libexec/openssh/ssh-pkcs11-helper
/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man1/slogin.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-copy-id.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man8/ssh-pkcs11-helper.8.gz修改配置文件
[root@server ~]# man 5 sshd_config 查看配置文件的帮助信息
[root@server ~]# vim /etc/ssh/sshd_config
17 Port 2882 修改sshd默认端口
38 PermitRootLogin no 禁止root远程登录
[root@server ~]# systemctl restart sshd创建普通职员
[root@server ~]# groupadd staff
[root@server ~]# useradd -g staff staff1
[root@server ~]# useradd -g staff staff2为用户设置密码(pwgen)
[root@server ~]# yum install -y epel-release.noarch
[root@server ~]# yum install -y pwgen
[root@server ~]# pwgen --help
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
Options supported by pwgen:-c or --capitalizeInclude at least one capital letter in the password至少包含一个大写字母-n or --numeralsInclude at least one number in the password至少包含一个数字-s or --secureGenerate completely random passwords生成完全随机密码-B or --ambiguousDon't include ambiguous characters in the password不包含歧义字符(1&l,0&o)-1Don't print the generated passwords in columns不在列中打印密码(一行一个)
[root@server ~]# pwgen -cnBs1 10 2
YPurX4FCTd     密码分配给staff1
H9F9aYXrzJ     密码分配给staff2
[root@server ~]# passwd staff1
更改用户 staff1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# passwd staff2
更改用户 staff2 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。为员工创建数据目录,指定权限
[root@server ~]# mkdir -p /jobs/staff
[root@server ~]# chgrp -R staff /jobs/staff/
[root@server ~]# chmod 1770 /jobs/staff/
[root@server ~]# ll -d /jobs/staff/
drwxrwx--T 2 root staff 6 8月  21 21:39 /jobs/staff/测试
[root@client ~]# ssh root@192.168.226.10
The authenticity of host '192.168.226.10 (192.168.226.10)' can't be established.
ECDSA key fingerprint is SHA256:+RvxL8ZDWnyO030Z5rOfjBuJaOG1yFvD9ieOY9uzWBA.
ECDSA key fingerprint is MD5:d2:a2:8c:c6:60:15:46:9b:09:75:ce:3f:e1:ea:6e:aa.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.226.10' (ECDSA) to the list of known hosts.
root@192.168.226.10's password:
Permission denied, please try again.
root@192.168.226.10's password:
Permission denied, please try again.
--------------------------------------------------root用户不允许登录
[root@client ~]# ssh staff1@192.168.226.10 -p 2882
staff1@192.168.226.10's password:
[staff1@server ~]$ cd /jobs/staff/
[staff1@server staff]$ touch test.txt
[staff1@server staff]$ exit
登出
Connection to 192.168.226.10 closed.
--------------------------------------------------
[root@client ~]# ssh staff2@192.168.226.10 -p 2882
staff2@192.168.226.10's password:
[staff2@server ~]$ cd /jobs/staff/
[staff2@server staff]$ mkdir dir1
[staff2@server staff]$ ll
总用量 0
drwxr-xr-x 2 staff2 staff 6 8月  21 22:28 dir1
-rw-r--r-- 1 staff1 staff 0 8月  21 22:26 test.txt
[staff2@server staff]$ rm -rf test.txt
rm: 无法删除"test.txt": 不允许的操作
----------------------------------------staff2不能删除staff1创建的文件

文件传输

scp 远程拷贝文件

  • 基于ssh协议

  • 主机之间复制文件必需得同时有两台主机的复制执行帐号和操作权限。

  • 两台主机都必须为Linux系统,不能跨操作系统

下载到本地(server1)
[root@server2 ~]# ls
anaconda-ks.cfg  dir1  video.mp4
[root@server1 ~]# scp root@192.168.226.20:/root/video.mp4 ./
root@192.168.226.20's password:
video.mp4
[root@server1 ~]# scp -r root@192.168.226.20:/root/dir1 ./
root@192.168.226.20's password:
[root@server1 ~]# ls
anaconda-ks.cfg  a.txt  dir1  video.mp4上传到远程(aliyun-server)
[root@server1 ~]# scp  ./video.mp4 root@120.24.76.94:/tmp/
The authenticity of host '120.24.76.94 (120.24.76.94)' can't be established.
ECDSA key fingerprint is SHA256:9pEHWkFQ19qj+ZYAyORdvYejZfSXWhjfgwHyfbXMPss.
ECDSA key fingerprint is MD5:a9:2a:14:cb:1b:bb:2a:09:65:7c:91:04:d6:f3:a2:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '120.24.76.94' (ECDSA) to the list of known hosts.
root@120.24.76.94's password:
video.mp4                                                                           100%   40MB   6.9MB/s   00:05
[root@server1 ~]# scp -r ./dir2 root@120.24.76.94:/tmp/
root@120.24.76.94's password:
[root@aliyun-server ~]# ls /tmp
dir2 video.mp4选项说明:
-r:递归,针对文件夹
-P:指定sshd服务端口,不加该选项默认22端口

lrzsz (Windows与Linux互传文件)

yum install lrzsz -yrz
选择文件,存到Linuxsz test1
选择存放位置,可存到Windows中

SSH-远程连接文件传输相关推荐

  1. Linux远程SSH终端和文件传输工具

    2019独角兽企业重金招聘Python工程师标准>>> 在Windows上打开Linux终端的工具很多,这里介绍三款目前在用的终端工具,非常好用! 1.putty 这款工具支持tel ...

  2. 文件传送到服务器的软件,远程服务器文件传输软件

    远程服务器文件传输软件 内容精选 换一换 已成功登录Java性能分析.待安装分析辅助软件的服务器已开启sshd.待安装分析辅助软件的服务器已安装JRE,JRE版本要求为Open JDK 11.Java ...

  3. ssh远程连接服务器

    文章目录 第三章 远程连接服务器 1.1 远程连接服务器简介 1.2 连接加密技术简介 1.3 ssh远程连接服务简介 1.4 sftp用法介绍 1.5 实验 作业: 第一题:两台机器:第一台机器作为 ...

  4. SSH远程连接服务(五)

    文章目录 1. 端口号 2. ssh与telnet区别 3. telnet服务 4. ssh相关命令 4.1 ssh命令 4.2 scp远程拷贝命令 4.3 rz和sftp 5. 在Linux中ssh ...

  5. 介绍3种ssh远程连接的方式

    摘要:SSH(安全外壳协议 Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,用于在网络中实现客户端和服务端的连接,典型的如我们在本地电脑通过 SSH连接远程服务器. ...

  6. (一)ssh远程连接服务器GPU以及其他GPU使用途径——新手指南

    前言 最近在训练语义分割网络时决定使用GPU,本文记录新手在使用GPU时遇到的一些坑.想要在win10系统上配置GPU运行Pytorch代码可以考虑以下几种方式: 安装cuda,以及GPU版本的pyt ...

  7. 第四章:ssh远程连接服务器

    目录 远程连接服务器简介ssh 连接加密技术简介 非对称加密的一对密钥位置路径 SSH工作流程: 一.版本协商阶段 二.密钥和算法协商阶段 会话密钥的生成: 三.认证阶段 SSH提供两种认证方法: s ...

  8. 【深度学习环境】Windows10系统+AutoDL算力平台|使用MobaXterm终端工具实现SSH远程连接服务器|实现PyCharm与服务器远程连接|远程连接(详细版)

    目录 前言:本机与服务器的连接流程及解释 1. 安装Pycharm专业版 2. 在AutoDL官网租用显卡(GPU) 3. 使用MobaXterm终端工具实现SSH远程连接服务器 4. PyCharm ...

  9. ssh 远程连接方式总结

    SSH 概述 SSH(安全外壳协议 Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,用于在网络中实现客户端和服务端的连接,典型的如我们在本地电脑通过 SSH连接远程服 ...

  10. Linux中怎么搭建SSH远程连接服务器

    文章目录 Linux中怎么搭建SSH远程连接服务器 一.远程连接服务器: 1.什么是远程连接服务器: 2.远程连接服务器的功能 3.常见的几种远程管理工具方式: 二.SSH连接加密技术: 1.非对称密 ...

最新文章

  1. 常见网络加速技术浅谈(二)
  2. 由oschina.neT了解到博客备份的代码
  3. Python 技巧篇-同一个方法多次引用不同效果功能实现,可选参数设置方法
  4. Binary Tree Level Order Traversal II 解题思路
  5. Nacos配置中心-命名空间与配置分组
  6. 重磅大礼!100本《机器学习》by周志华,免费送!
  7. springMVC一些实践总结
  8. ServerProperties
  9. 嵌入式打印机系统移植支持HP LaserJet 1020 plus 激光打印机和HP DeskJet 1010喷墨打印机
  10. 两球完全弹性碰撞反弹方向问题
  11. 国际奥林匹克运动会是怎么来的?
  12. springCloud报错No instances available
  13. php定做单城市公交路线查询系统
  14. 哈佛架构、冯诺依曼架构、指令集
  15. 星鲨StarSharks游戏打金攻略和收益详解
  16. Arduino MEGA2560与蓝牙的通信(玄学)问题
  17. 傅里叶级数及傅里叶变换
  18. 访问weblogic控制台报错的问题处理
  19. 最新版 FatFS f_mkfs 详解
  20. [简单逻辑学]逻辑学的基本原理——区分原因

热门文章

  1. input的各种事件
  2. TShark 批量转换数据包格式
  3. python学习-reshape()函数理解
  4. Ajax跨域请求(一):什么是CORS
  5. oracle中设置表的主键字段为自增序列(实例)
  6. 元宇宙|世界人工智能大会之元宇宙论坛:设计篇
  7. 人们为什么把电子计算机叫电脑,《计算机王国》.pdf
  8. 网络安全从业人员应具备的职业素养
  9. 不给代码写文档,让代码文档化
  10. java xmap_转:使用XMAP完成JavaBean和XML之间转换