Linux26_连接远程终端

常见网络协议:

HTTPS协议安全性更高;HTTP协议是明文传输的;

FTP协议:文件传输协议

电子邮件协议:IMAP、POP3

Telnet协议:简单易用,在机器间传输简单信息;明文传输

明文:plaintext

密文:cyphertext

WireShark 用于监听网络,截获数据

==================================================================

SSH协议:Secure Shell的缩写

加密算法大致分为两类:对称加密和非对称加密;

对称加密,用一个密钥来加密信息;加密解密用同一个密钥;加密方和解密方都需要知道同一个密钥;

这样的话,客户机和服务器就需要传递这个密钥;传递密钥用的是明文,就有可能被截获;

为了加密用于对称加密的密钥:非对称加密

公钥只用来加密;

用非对称加密的算法,我们只能用私钥来解密;

公钥可以在网络上用明文传输;是公开的密钥;

公钥被截获也没有关系;

用于解密的私钥,要保管好;

RSA算法:非对称加密算法

用SSH创建一个安全的通信通道:

SSH结合使用非对称加密和对称加密两种方法;

首先,使用非对称加密,安全地传输对称加密地密钥;

之后,一直使用对称加密密钥作为加密和解密手段;

非对称加密:太消耗电脑资源;

非对称加密只是在通信之初传递对称加密密钥;

加密通道建立过程:

1、服务器首先将非对称加密的公钥A用明文传递给客户机;

2、客户机用公钥A加密自己的对称加密密钥C;将经过A加密的C传递给服务器;

3、服务器用非对称加密的私钥B,来解密被加密过后的C;

4、现在服务器和客户机都知道了对称加密的密钥C;

5、关键是对称加密的密钥C从来没有在网络上用明文传递过,就很安全了;

6、客户机就可以放心地把自己的登录名和密码传递给服务器了;

以上这些都是自动完成的;

===================================================

SSH的使用:

1)你已经租用了一台服务器

  这台服务器已经配置好了作为SSH服务器,你什么也不用做;

2)你没有租用一台服务器

  将自己电脑配置成SSH服务器;

    安装OpenSSH软件,是SSH协议的免费开源实现;

    分为客户端openssh-clients和服务端openssh-server;

    如果你只想用ssh远程连接到别的机器,就下载安装openssh-clients;

    如果你要使自己的机器开放SSH服务,则需要安装openssh-server;这样的话会开启ssd这个守护进程,或者叫精灵进程

    手动开启 sudo systemctl start sshd;   

    停止的话sudo systemctl stop sshd;   

    查看 sudo systemctl status sshd

    将sshd设为开机自启动:sudo systemctl enable sshd

==================================================

实践:

安装ssh:yum install openssh-server

启动ssh:systemctl start(restart) sshd

设置开机运行ssh:systemctl enable sshd

Windows端:可以使用XShell、SecureCRT等软件;

Linux端:yum install openssh-clients

macOS端:已经默认安装了

=================================================

用config文件配置SSH:

全局的SSH文件有两个:

1)SSH客户端的配置:/etc/ssh/ssh_config

2)SSH服务端的配置:/etc/ssh/sshd_config

客户端config文件的使用手册:man ssh_config

服务端config文件的使用手册:man sshd_config

客户端config文件的常用配置参数

host   别名

hostname 远程主机名

port   连接到远程主机的端口

user 用户名

客户端config文件的配置例子  //客户端修改config文件比较少

Host myname

  HostName 192.168.0.1

  Port 22

  User root

服务端config文件的常用配置参数

Port  sshd服务端口号,默认是22

PermitRootLogin  是否允许以root用户身份登录,默认是可以

PasswordAuthentication  是否允许密码验证登录,默认是可以

PubkeyAuthentication  是否允许公钥验证登录,默认是可以

PermitEmptyPasswords  是否允许空密码登录,不安全,默认是不可以

修改全局的config文件后,重启sshd服务使之立即生效

sudo systemctl restart sshd

局部的config文件,对于客户端而言:

root用户的家目录下如果没有.ssh目录,:ssh localhost 来生成

局部的客户端config文件在用户家目录的.ssh的隐藏目录中

config默认是没有创建的;

一般会把config文件的权限修改为600:chmod 600 ~/.ssh/config

这样就可以用 ssh 别名 来快速登陆远程服务端;

使用config文件方便管理多个远程主机

=================================================

SSH的config文件可以帮助我们配置SSH

config文件分为全局config文件和局部config文件

全局的config文件会对所有用户生效,要谨慎修改

 

=================================================

SSH免密码登录

SSH有两种登录方法

1)基于口令:账户加密码

2)基于密钥:

  在客户机生成密钥对(公钥、私钥),把公钥上传到服务器,并于服务器的公钥进行比较

具体过程:

1、ssh-keygen (默认使用RSA非对称加密算法)在客户机生成密钥对

  该命令等价于 ssh-keygen -t rsa

  运行完之后,会在家目录的~/.ssh/目录下,生成两个文件;

    id_rsa.pub 公钥

    id_rsa        私钥

2、把客户机的公钥传送到服务器

  ssh-copy-id  root@ip

  等价于ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip

  该命令会把客户机的公钥追加到服务器的一个文件中 authorized_keys  位于服务端~/.ssh/authorized_keys

如果设置SSH免密码后仍然想使用密码登录

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@host

Windows下Putty免密码登录linux方法;

  百度一下

为了免去每次使用SSH协议连接远程机器都要输入用户密码的麻烦;

我们可以创建一个用于验证身份的密钥对(公钥、私钥);

公钥需要传输并存储到远程机器上

私钥则存在我们自己的电脑里

之后的SSH连接就不需要输入密码了

原文地址:https://www.cnblogs.com/grooovvve/p/12513657.html