SSH服务
分类:项目实施 热度:

SSH服务
========================================================
telnet不能使用root用户登录,密码是明文,容易被截取,端口号:23
 
一、sshd概述
软件包:           openssh-server
                      openssh-clients
端口:           22/tcp
配置文件:         /etc/ssh/sshd_config            //服务端配置文件
                          /etc/ssh/ssh_config              //客户端配置文件
 
# netstat -tnlp |grep :22                          //查看sshd是否监听
# ps aux |grep sshd
root      2729  0.0  0.0   7224   776 ?        Ss   07:07   0:00 /usr/sbin/sshd
 
二、ssh应用
ssh:不要去修改ssh的端口,没用!扫描软件很容易就扫描出来了
# ssh 192.168.2.104                    //以当前用户
# ssh root@192.168.2.104                //以指定用户 
# ssh 192.168.2.104 -l root
# ssh -X 192.168.2.104                //可以执行远程主机的图形 oclock
# ssh  192.168.2.104  -p 2222                             //指定端口ssh
 
# ssh 192.168.2.104 'hostname'          //在远程主机上执行shell命令,这种方式没有连接
# ssh 192.168.2.104 date;date            //先显示远程的时间,再显示本机时间
# ssh 192.168.2.104 'passwd root'
# echo "123" |passwd root --stdin        //改本机root密码   --stdin标准输入
# ssh 192.168.2.104 'echo 123 |passwd root --stdin'   //在远程主机上执行修改密码
 
scp:
# scp -r /etc 192.168.5.32:/tmp 
# scp -r 192.168.5.32:/dir1 /root
# scp -P 2222 192.168.2.137 /root                   //-P 改端口进行远程拷贝
 
rsync: 
增量同步
Rsync的命令格式可以为以下六种: 
  1.rsync [OPTION]... SRC DEST 
  2.rsync [OPTION]... SRC [USER@]HOST:DEST 
  3.rsync [OPTION]... [USER@]HOST:SRC DEST 
  4.rsync [OPTION]... [USER@]HOST::SRC DEST 
  5.rsync [OPTION]... SRC [USER@]HOST::DEST 
  6.rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 
  
  1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup 
  2)使用一个远程shell程序(如ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c KVM:src 
  3)使用一个远KVM程shell程序(如ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz :src/bar /data 
  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack ------>一个冒号是路径,两个冒号可以使用别名
  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www 
  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www 
 
基本使用:
# rsync -va /dir1 /tmp
# rsync -va /dir1 192.168.5.32:/tmp    //同步整个/dir1目录
# rsync -va /dir1/ 192.168.5.32:/tmp    //同步/dir1目录下的所有文件
# rsync -va --delete /dir1 192.168.5.32:/tmp    //--delete 删除那些DST中SRC没有的文件
# rsync -va --delete /dir1 192.168.5.32:/
# rsync -va 192.168.5.230:/var/ftp /ftp
 
参数:
-a   归档模式
-v   详细输出
-z   传输压缩
================================================================================================================
================================================================================================================
 
Rsync配置
 /etc/rsyncd.conf  (默认是没有的,可以手工创建)
 #全局选项
 #strict modes =yes                        #是否检查口令文件的权限
 port = 873                               #默认端口873
 log file = /var/log/rsyncd.log           #日志记录文件     原文中有的,我没有使用,日志文件  
  pid file = /usr/local/rsync/rsyncd.pid   #运行进程的ID写到哪里    原文中有的,我没有使用,日志文件  
 
 #模块选项
 [backup]                                   # 这里是认证的模块名,在client端需要指定
 max connections = 5                      #客户端最大连接数,默认0(没限制)            
 uid = root                      #指定该模块传输文件时守护进程应该具有的uid 
          gid = root                      #指定该模块传输文件时守护进程应该具有的gid 
           path = /home/admin/testrsync   # 需要做备份的目录
           ignore errors                  # 可以忽略一些无关的IO错误
           read only = no                 #no客户端可上传文件,yes只读
           write only = no                #no客户端可下载文件,yes不能下载
           hosts allow = *                #充许任何主机连接
           hosts deny = 10.5.3.77         #禁止指定的主机连接
           auth users = root              # 认证的用户名,如果没有这行,则表明是匿名
           secrets file = /home/admin/security/rsync.pass    # 指定认证口令文件位置
 
生成rsync密码文件
 在server端生成一个密码文件/home/admin/security/rsync.pass 
        
        vi rsync.pass
  
         ha:123
 
Rsync 的启动
  rsycn 的启动方式有多种,我们在这里介绍以下几种:
 守护进程方式:(我现在只使用这个)
 rsync --daemon
 
 
 验证启动是否成功
  ps -aux |grep rsync
  root       59120  0.0  0.2  1460   972  ??  Ss    5:20PM   0:00.00  /usr/local/rsync/bin/rsync –daemon 
 
netstat -an |grep 873
tcp4       0      0  *.873                  *.*                    LISTEN
结束进程:kill -9 pid的值 kill -15 进程名
 
 
客户端访问:(客户端也需要安装 rsync,如果是windows,安装cwrsync)     实例演示使用:
 cd /usr/local/rsync/bin     // rsync 安装目录下下载文件      
 下载文件:
  ./rsync  -vzrtopg --progress --delete  root@xxx.xxx.xxx.xxx::backup  /home/admin/getfile
 
 上传文件:     /usr/bin/rsync -vzrtopg --progress /home/admin/getfile  root@xxx.xxx.xxx.xxx::backup     
 
Rsync 同步参数说明
-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除
======================================================================================
 
sftp:
# sftp 192.168.5.32
 
 
三、sshd服务配置
# man sshd_config
# vim /etc/ssh/sshd_config
UseDNS no                                 //不使用DNS解析        
GSSAPIAuthentication no                                         
PasswordAuthentication yes                                         
PubkeyAuthentication yes                                             
PermitRootLogin no                              //禁用root远程登录        
PermitEmptyPasswords no                                         
AllowUsers jack alice                                   //只允许jack和alice远程登录        
AllowGroups hr                                             
Port 22222                                 //修改端口, 范围1-65535         
# service sshd restart                                                                                                    
# ssh tom@192.168.2.104 -p 22222                     //登录时-p指定端口                       
 
========================================================
小知识:
/etc/ssh/ssh_config                //客户端配置文件
StrictHostKeyChecking ask|yes|no              //客户端在登录服务器,第一次不用输入yes
========================================================
 
 
四、使用公钥认证
# vim /etc/ssh/sshd_config
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys                
 
Linux客户端
1. 客户端生成公钥和私钥,例如以root用户
[root@station115 ~]# ssh-keygen  
[root@station115 ~]# ls .ssh/
id_rsa (私钥) id_rsa.pub(公钥)  known_hosts
2. 将公钥传到所需登录服务器(对应的用户,特定的位置)
[root@station115 ~]# ssh-copy-id -i 192.168.2.104  生成的authorized_keys文件权限必须是600,敏感文件的权限不能太大,否则不成功
 
3.将客户端的公钥拷贝给服务端并改名为authorized_keys。这是一种原始的方法 还是ssh-copy-id靠谱
拷贝可能会出现的错误:
身份加载失败,使用ssh-add就可以解决
ssh-add - adds RSA or DSA identities to the authentication agent
Windows客户端
1. 在windows端生成密钥对,私钥密码可选
2. 将公钥上传到Linux服务器
3. 转换格式并保存到相应用户的.ssh/authorized_keys
# ssh-keygen -i -f windows
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAkntoWbTHnGrBU3z+7g/bewvtVZ/BWxEObukC63tfIiW1XtPJAtcX2Wf+CUu5KKgmgf3vWJ2fcEcNhjEStAhKSuP2iMVyqUbpFABIR2vqaB02vx/mAUOhOKS471ieUYo7sO8pJkbIYcsjy1KEVOxeKNF6UHG+lOSXO6GFFbMvknE=
# ssh-keygen -i -f windows >> ~root/.ssh/authorized_keys
 
 
PS:登录的时候,必须保证客户端和服务器两端所登录的客户是一致的
 
五、ssh的认证方式:
[root@yunwei  ~]# ssh -v 192.168.122.2
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.122.2 [192.168.122.2] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/identity-cert type -1
debug1: identity file /root/.ssh/id_rsa type 1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.122.2' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering public key: /root/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env XMODIFIERS = @im=ibus
debug1: Sending env LANG = en_US.UTF-8
Last login: Mon Mar 31 01:46:20 2014 from 192.168.122.1
 

上一篇:没有了 下一篇:DHCP服务器
猜你喜欢
各种观点
热门排行
精彩图文