Ubuntu Server SSH服务器密钥验证

Linux下SSH的确是好用的东西,不过不能让坏人进入,如果不法之徒进入你的SSH服务器,后果不堪设想。采用密钥验证取消密码验证等安全举措让你的SSH服务器更坚固。

查看sshd是否启动

ps -e | grep ssh

该命令是查看是否有sshd进程的

如果显示如下:

  930 ?        00:00:00 sshd
 2069 ?        00:00:00 ssh-agent

说明已经安装并且启动

启动ssh的命令是:sudo /etc/init.d/ssh -start 

重启服务

sudo /etc/init.d/ssh resart

sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start



SSH服务器的配置文件是sshd_config
/etc/ssh/sshd_config 
使用ssh-keygen命令生成密钥对
$ ssh-keygen -t rsa 
ssh-keygen命令将在“.ssh”目录中生成公钥和私钥文件
id_rsa是私钥文件,内容需要严格保密
id_rsa.pub是公钥文件,可发布到SSH服务器中
 
将公钥内容追加到authorized_keys 文件
authorized_keys 文件保存在SSH服务器中用户目录的“.ssh”子目录中
authorized_keys用于保存所有允许以当前用户身份登录的SSH客户端用户的公钥内容
 
如果服务器的目录中没有authorized_keys 文件,只需要将id_rsa.pub公钥文件的名称更改为authorized_keys,如果已经有了authorized_keys文件,使用 “>>”重定向符将用户公钥追加到authorized_keys文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys
这里只需要将id_rsa.pub公钥文件的名称更改为authorized_keys就可以了。
 
找到/etc/ssh/sshd_config这个文件,按照以下说明进行编辑:
# 设置选项PermitRootLogin
# 选项设置为without-password,root用户就不能从没有密匙的计算机上登录
# 选项设置为no,将禁止root用户登录,只能用sudo命令从普通用户转成root
PermitRootLogin without-password
 
# 设置选项PasswordAuthentication
# 选项设置为no,只允许用户用基于密匙的方式登录
PasswordAuthentication no

配置完毕以后保存,退出Ubuntu重新用F-Secure客户端连接,你会发现,这个世界清净了。


在客户端还可以在/etc/ssh/ssh_config末尾加入

Host lab
Port 16021
user zhangping
HostName lab


也可以再.ssh/config文件里写



以后客户端只要输入命令 ssh lab 就可一连接上主机了


另外:

解决连接服务器慢有以下几个方法:

1、在server上/etc/hosts文件中把你本机的ip和hostname加入,改后便可生效;

2、在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no

  然后/etc/init.d/ssh restart使配置生效;

3、注释掉server上/etc/resolv.conf中所有行改后便可生效;

4、修改server上/etc/nsswitch.conf中hosts为hosts: files

  改后便可生效;

       5在server上/etc/ssh/sshd_config文件中修改GSSAPIAuthentication no.


下面是ssh服务详解

-------------------------------------------------------------------------------------------------------------

SSH服务(TCP端口号22):安全的命令解释器
为客户机提供安全的Shell 环境,用于远程管理
SSH基于公钥加密(非对称加密)技术: 数据加密传输; 客户端和服务器的身份验证;
公钥 和 私钥   是成对生成的,这两个密钥互不相同,两个密钥可以互相加密和解密;
                   不能根据一个密钥而推算出另外一个密钥;
                   公钥对外公开,私钥只有私钥的持有人才知道;


数据加密  和  数字签名  (根据功能不同分的)

发送方使用接受方的公钥加密数据;
接受方使用自己的私钥解密数据;
数据加密保证了所发送数据的机密性;

数字签名:(数字签名保证数据完整性、身份验证和不可否认)
发送方:对原始数据执行HASH算法得到摘要值;发送方用自己的私钥加密摘要值;
           将加密的摘要值与原始数据发送给接受方;
接受方:用发送方公钥解密摘要值,同时对收到的原始数据同样执行HASH产生另一种摘要值;
           将解密的摘要值与产生的摘要值对比;

OpenSSH:
服务端主程序:/usr/sbin/sshd
客户端主程序:/usr/bin/ssh
服务端配置文件:/etc/ssh/sshd_config (重启shhd服务生效)

客户端配置文件:/etc/ssh/ssh_config
SSH登录使用的用户名:服务器中的本地系统用户的帐号名;
SSH登录的用户验证方式
密码验证:使用服务器中系统帐号对应的密码;(PasswordAuthentcation  yes)
密钥对验证:使用客户端中生成的公钥、私钥;(PubkeyAuthentication yes
                                                            AuthorizedKeyFile  .ssh/authorized_keys)

使用ssh命令远程登录方法:
1.ssh 用户名@服务器地址
2.ssh -l 用户名  服务器地址  (较少用)
3.ssh 服务器地址(服务器正在使用哪个用户就以哪个用户登录)

客户端密钥存放位置
~.ssh目录下
服务器端的密钥存放位置
/etc/ssh/ssh_host_*

known_hosts  存放访问过的服务器的公钥
authorized_keys 存放需要验证的客户机的公钥
.ssh文件夹和下面的文件权限的组和其它人不能有w权限
            
ssh访问很慢的原因和解决办法
原因:访问服务器的时候会把服务器的ip地址反向解析为域名,如果无法解析就会导致登陆时很慢
下面三种方法都可以解决这个问题
1、清空/etc/resolv.conf文件中nameserver记录
2、在客户机的/etc/hosts文件中添加服务器域名的解析记录
3、修改客户机的/etc/ssh/ssh_config文件中:GSSAPIAuthentication no
        
问题二:若是公钥文件出了问题,会导致无法认证,解决方法,就是把文件删除
        rm -rf  /root/.ssh/know_hosts
        service sshd restart
             
配置案例:

        密码方式:  
                     service sshd restart     重启服务
            netstat -anpt  |  grep  sshd   查看端口
            登录主机:ssh root@192.168.100.127
            ssh直接在远程主机上新建用户: ssh root@10.10.10.1 adduser txy
        在密码认证的时候要看:服务器端中的 /etc/ssh/sshd_config 中PasswordAuthentcation  yes,,才能用密码认证
        
    第一次访问服务器时不用输入yes
                ssh -o StrictHostKeyChecking=no root@10.10.10.1

                /etc/ssh/ssh_config客户端文件
                StrictHostKeyChecking no  第一次访问服务器时不用输入yes

    秘钥方式
    
        这里的例子是一个普通用户登录到服务器中的普通用户,root用户登录就更加简单,不用创建文件,不用修改权限,生成秘钥的地方的root下
                    复制scp的地方也在root下:
        服务器端
        
            查看文件:修改    /etc/ssh/sshd_config中   PubkeyAuthentication yes
            创建文件:    mkdir /home/xiaohua/.ssh
            修改文件权限:    chomd -R 600 /home/xiaohu/.ssh 在这个文件中别的用户不能有w权限
        
        客户端:
            useradd xiaolue
            su - xiaolue  
            ssh-keygen
            scp /home/xiaolue/.ssh/id_rsa.pub root@192.168.100.127:/home/xiaohua/.ssh/authorized_keys

访问控制:
        /etc/hosts.allow 优先于下面的
        /etc/hosts.deny
        首先检查hosts.allow文件,若找到相匹配的策略,则允许访问;否则继续检查hosts.deny文件,若找到了
        相匹配的策略,则拒绝访问;如果两个文件中都没有相匹配的策略,则允许访问;

        vim /etc/hosts.allow
            sshd:210.13.218.*:allow  允许登录的ip ,allow可以省略
            
        它能控制服务的范围:1,受super daemon (xinetd) 服务管理
                        2,受支持libwrap.so模块的服务
        查看具体服务是否控制:ldd /usr/sbin/sshd  |  grep wrap
                           idd $(which 服务)   |  grep wrap
                        
        修改后要重启服务:service xined restart

有两款有用的软件:winSCP   Secure CRT

远程桌面: (切记远程要开启:linux在系统,首选项,远程桌面。  )

开启vnc的1号桌面
vncserver :1
修改~.vnc/xstartup文件
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER           去掉注释
# exec /etc/X11/xinit/xinitrc          去掉注释
修改完毕后重启vncserver
vncserver -kill :1
vncserver :1

手工启动vnc服务,会生成xstartup文件
修改/etc/sysconfig/vncserver文件后
可以使用service vncserver restart 重启vnc服务
chkconfig vncserver on

客户端
vncviewer -Shared:不中断已有的连接
         -ViewOnly:只读远程

vnc适合多平台
xmanager适合windows to linux(unix)
   linux 配置
    vim /usr/share/gdm/defaults.conf
        DisplaysPerHost=2          取消注释,动态注册两个SESSION
        Enable=true               263行,false 改成ture
        Port=177                284行,取消注释
        AllowRemoteRoot=true    214行,使root可以远程登录
        
    vim /etc/inittab
        id:5:initdefault:     设置系统运行级别为5,如果本来就是5,就不要修改
        x:5:respawn:/user/sbin/gdm    添加到最后一行
        
    重启:gdm-restart
    
    查看端口:ntstat -tulnp | grep 177
    
   windows客户机连接使用
            
rdesktop适合linux to windows(要开启远程桌面)
windows 远程桌面客户端mstsc

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值