linux ssh服务

来源:互联网 发布:办公软件常用功能 编辑:程序博客网 时间:2024/05/21 09:38

sudo apt-get install openssh-server 安装ssh 
service ssh start 开启ssh服务

有时可以ping 的通,但会发现无法用xshell客户端无法连接,这就要开启linux的ssh服务,(也有可能是未安装,命令行安装)

SSH服务(TCP端口号22,tcp网络协议):安全的命令解释器

为客户机提供安全的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



RPM 全名是『 RedHat Package Manager 』简称则为 RPM。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序。他最大的特点就是将您要安装的套件先编译过( 如果需要的话 )并且打包好了,透过包装好的套件里头预设的数据库记录, 记录这个套件要安装的时候必须要的相依属性模块( 就是你的 Linux 主机需要先存在的几个必须的套件 ),当安装在你的 Linux 主机时, RPM 会先依照套件里头的纪录数据查询 Linux 主机的相依属性套件是否满足, 若满足则予以安装,若不满足则不予安装。那么安装的时候就将该套件的信息整个写入 RPM 的数据库中,以便未来的查询、验证与反安装!这样一来的优点是:
1. 由于已经编译完成并且打包完毕,所以安装上很方便( 不需要再重新编译 );
2. 由于套件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装;
缺点是:
1. 安装的环境必须与打包时的环境需求一致或相当;
2. 需要满足套件的相依属性需求;
3. 反安装时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!

SRPM 是 Source RPM 的意思,也就是这个 RPM 档案里面含有原始码( Source Code )哩!特别注意的是,这个 SRPM 所提供的套件内容『并没有经过编译』, 他提供的是原始码喔, 通常 SRPM 的附檔名是以 ***.src.rpm 这种格式来命名的。。与 RPM 档案相比, SRPM 多了一个重新编译的动作, 而且 SRPM 编译完成会产生 RPM 档案。SRPM 既然是原始码的格式,自然我们就可以透过修改 SRPM 内的参数设定档,然后重新编译产生能适合我们 Linux 环境的 RPM 档案。

使用RPM时可能会遇到软件包依赖性的问题,第一种解决方式是安装好所有的依赖包,第二种方式是使用urpmi/apt/yum来自动安装依赖包。

rpm 就会将套件的信息写入:/var/lib/rpm 这个目录中,所以, 往后您在进行查询的时候或者是预计要升级的时候,相关的信息就会由 /var/lib/rpm 这个目录的内容数据来提供。

RPM 安装包

[root@linux ~]# rpm -ivh rp-pppoe-3.1-5.i386.rpm

[root@linux ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm

[root@linux ~]# rpm -ivh http://website.name/path/pkgname.rpm

可使用的参数包括--nodeps, --nomd5, --noscripts, --replacefiles, --replacepkgs, --force, --test

RPM 升级包

-Uvh
后面接的套件即使没有安装过,则系统将予以直接安装; 若后面接的套件有安装过旧版,则系统自动更新至新版;
-Fvh
如果后面接的套件并未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您 Linux 系统内的套件会被『升级』!

RPM 查询包

[root@linux ~]# rpm -qa
[root@linux ~]# rpm -q[licdR] 已安装的套件名称
[root@linux ~]# rpm -qf 存在于系统上面的某个档案
[root@linux ~]# rpm -qp[licdR] 未安装的某个文件名称
参数:
在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!
查询主要分为两部分,一个是查已安装,另一个则是查某个 rpm 档案内容。
查询已安装套件的信息:
-q :仅查询,后面接的套件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有套件名称;
-qi :列出该套件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该套件所有的档案与目录所在完整文件名 (list);
-qc :列出该套件的所有设定档 (找出在 /etc/ 底下的檔名而已)
-qd :列出该套件的所有说明档 (找出与 man 有关的档案而已)
-qR :列出与该套件有关的相依套件所含的档案 (Required 的意思)
-qf :由后面接的文件名称,找出该档案属于哪一个已安装的套件;
查询某个 RPM 档案内含有的信息:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出
某个 RPM 档案内的信息,而非已安装的套件信息!注意!

RPM 验证包

[root@linux ~]# rpm -Va
[root@linux ~]# rpm -V 已安装的套件名称
[root@linux ~]# rpm -Vp 某个 RPM 档案的档名
[root@linux ~]# rpm -Vf 在系统上面的某个档案
参数:
-V :后面加的是套件名称,若该套件所含的档案被更动过,才会列出来;
-Va :列出目前系统上面所有可能被更动过的档案;
-Vp :后面加的是文件名称,列出该套件内可能被更动过的档案;
-Vf :列出某个档案是否被更动过~

RPM 卸载包

[root@linux ~]# rpm -e logrotate <==解安装 logrotate 套件
[root@linux ~]# rpm --rebuilddb <==重建数据库

RPMBUILD 安装包

--rebuild
这个参数会将后面的 SRPM 进行『编译』与『打包』的动作,最后会产生 RPM 的档案,但是产生的 RPM 档案并没有安装到系统上。
--recompile
这个动作会直接的『编译』『打包』并且『安装』啰!请注意, rebuild 仅『编译并打包』而已,而 recompile 不但进行编译跟打包,还同时进行『安装』了!

0 0