Burnov

导航

02--OpenSSH1

服务器的远程管理介绍

  远程管理使用两个协议,一个是早期的telnet协议,一个是现在常用的ssh协议;

  首先,远程管理服务提供的普通的C/S架构的;所以,我们需要在服务端运行一个软件程序,提供给客户端做连接;

  telnet协议使用 tcp/23 号端口,它追求的是软件程序小,而且传送熟读快,所以它使用简单,都是明文传输,相对于现在的互联网环境而言,不太安全;

  所以,我们似乎用ssh协议来取代了telnet协议;

telnet协议

  telnet协议,明文传输数据,包括用户名和密码;使用tcp/23号端口;

  telnet协议在Linux下的使用方式:

yum install telnet-server
yum list all telnet*

  开机启动telnet,注意,telnet的服务名称是超级守护进程--xinetd,telnet进程是属于超级守护进程中的一个;

chkconfig telnet on
/etc/init.d/xinetd start
chkconfig --list

ss -tnl

 

  远程连接服务器 23 号端口:

    开启客户端的telnet功能:

    iptables防火墙放行23号端口:

iptables -I INPUT -d 192.168.94.128 -p tcp --dport 23 -j ACCEPT

    远程连接,如下:

    再输入用户名和密码即可;

    【这里需要注意的是,telnet登陆不能使用root用户直接登陆,需要去创建普通用户】

ssh协议

  相对于telnet,它是一种更加安全的远程连接协议;再传输数据之前,客户端与服务器端需要先建立加密通道,才能进行数据传输;

ssh的工作原理

  sshv1不太安全,所以现在默认使用sshv2版本;

  1、客户端发起ssh请求

  2、服务器端发送私钥和加密的数据到客户端,然后客户端使用服务器的公钥进行解密,进行服务器的确认,保证服务器的身份的可靠性;如果没有这个过程,或者没有服务器的公钥,就会提示警告;

  3、客户端输入用户名和密码,传输到对端进行认证;这时候发送的用户名和密码是使用公钥进行加密了的数据;

  4、最后,服务器收到用户名和密码,配对认证通过,则服务器端发送命令提示符给客户端;

  

  除了可以使用用户名和密码登陆外,还能够使用证书来进行登陆;这种登陆方式,不需要使用用户名密码认证;这时,密钥对由客户端生成,再将公钥交给服务器,但是这个公钥是不能公开的;当客户端连接服务器端的时候,使用私钥加密数据,这时候,只要能匹配,则就能直接登陆到服务器上;

ssh的版本

  v1:基于CRC-32做MAC校验的方式,不太安全,容易收到中间人攻击,所以v1版本的ssh我们现在使用较少了;

  v2:双方主机协议选择安全的MAC校验方式;基于DH算法来做密钥交换,基于RSA或者DES算法来实现省份验证的;其中,DH非对称算法可以再不传输密钥的情况下,让对端算出私钥;

ssh的认证方式

  ssh协议一般使用两种认证方式:一种是基于user/password的方式;另一种就是基于证书认证的方式;

  下面我们再Linux上面实现这两种认证方式;我们使用的软件程序就是OpenSSH程序;

OpenSSH

  OpenSSH工具是基于C/S架构的,客户端工具有:ssh,scp,sftp;服务器端:sshd服务;

客户端

  客户端主配置文件为 /etc/ssh/ssh_config

  ssh命令

    用法:ssh [user@]host [command]

    -l  //指明登陆用户,和 user@ 效果一样

    -p  //指明登陆端口,默认额一般使用的 22 号端口;

    如果是想再其他主机上运行条命令:

ssh root@192.168.94.128 'hostname'
password:  //输入密码,则可以再服务器端运行hostname命令

服务器端

  服务器端主配置文件为 /etc/ssh/sshd_config

vim /etc/ssh/sshd_config  //查看服务器端主配置文件参数

  常用参数:

    port 20  //默认为20号端口,可以修改

    AddressFamily any  //支持ipv4或者ipv6

    Listenaddress 0.0.0.0  //监听的所有端口地址

    Hostkey  //主机的密钥

    KeyRegenerationInterval 1h  //对称密钥生成的新时间

    SyslogFacility AUTH  //记录日志的方式

      /var/log/secure  //这个目录下记录了登陆成功和失败的日志信息

    LoginCraceTime 2m  //登陆的限制时间长度 2分钟

    PermitRootLogin yes  //是否容许管理员登陆

    StrictModes yes  //是否使用严格的检查模式

    MaxAuth Tries 6  //最大的尝试次数

    MaxSessions 10  //最大的会话数量

    RSAAuthentication yes  //RSA认证

    PubkeyAuthentication yes  //支持公钥认证方式

    PasswordAuthentication yes  //支持密码认证方式

    ChallengeResponscAuthentication yes  //支持挑战认证方式

    Keyberos options  //守护认证,第三方的统一认证架构服务

    GSSAPI options  //GSS的开发接口选项

    X11 forwarding  //支持图形的传输功能

    UseDNS no  //关闭DNS的反向解析

基于密钥的认证方式

  需要再客户端上生成一对密钥,将这对密钥中的公钥放入到服务器端的 ssh 目录中;

  1、客户端,生成密钥:

ssh-keygen -t rsa

    默认回车即可;

  查看生成的密钥对;

ls /root/.ssh/

    其中,id_rsa是私有密钥,而id_rsa.pud为公有密钥;

 

  也可以通过如下命令直接生成密钥对:

ssh-keygen -t rsa -P '' -f '~/.ssh/id_rsa'  //这样就不用进入交互模式下

 

  2、将公钥传递给服务器端;

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.94.128
passwd:

    传输到服务器端以后,名字默认跟换为了authorized_keys;

 

  3、测试

  这时候再去访问服务器,传输命令等操作,都不需要密码了;

ssh root@192.168.94.128 'ifconfig'

  命令可以正常再客户端上面运行;

scp与sftp

  scp为常用命令,它用来跨主机进行数据的传输;

  用法有两种:

  1、pull模式:scp [option] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE

    前提是客户需要有访问这个目录的权限

  2、push模式:scp [option] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE

 

  常用的option:

    -r  递归复制

    -p  保持源文件的属性信息

    -q  静默模式

    -P port  指定端口,和ssh工具使用的端口保持一致

 

  例如:

scp root@192.168.94.128:/etc/fstab /tmp/fstab.bak
scp /etc/fstab root@192.168.94.128:/tmp/

 

  sftp命令就和普通的ftp服务器一样:

  用法:sftp [user@]host

  help 命令可以查看再 sftp 下的用法;【和ftp的用法相同,这里就不再赘述】

posted on 2019-06-07 17:02  Burnov  阅读(272)  评论(1编辑  收藏  举报