zoukankan      html  css  js  c++  java
  • 远程访问Linux的常见方式

    访问方式

    不加密文字界面:telnet、rsh
    加密文字界面:SSH
    图形界面:Xdmcp、RDP、VNC
    SSH

    SSH用来取代finger、R shell(rlogin、rcp、rsh)、telnet和taik等连接方式,它传输更安全
    SSH默认提供了2个服务
    ssh
    sftp-server
    SSH版本
    V2比V1多了连线检测,防止线路插入攻击代码
    SSH加密
    密钥系统DSA、RSA和Diffie-Hellman在加解密速度和安全性方面各有不同
    用户到服务器的双向加密传输过程
    C -> S:C向S发送资料时,用S的公钥加密后发出,S收到后用自己的私钥解密
    S -> C:S向C发送资料时,用C的公钥加密后发出,C收到后用自己的私钥解密
    总的来说,公钥是用来加密,而私钥用来解密,私钥要掌握在自己手中用来解密用
    SSH连接建立过程:
    -S端产生公私钥。第一次启动时生成$keys所表示的三类加密系统算法的公钥和私钥文件,如果这些文件缺失,则在sshd服务重启后重新生成
    $keys:/etc/ssh/ssh_host_xxx
    -C端第一次与S端交互:C发送连接请求,收到S端发回来的公钥
    -记录/比对S端的公钥,同时随机生成自己的密钥对
    S端的公钥存放在C端的~/.ssh/known_hosts中
    -C端将用S端公钥加密的自己公钥传给S端
    -开始传输。C端向S端发送请求时用S端的公钥加密请求,S端收到请求后用自己的私钥解密并用C端的公钥加密响应,C端收到响应后用自己的私钥解密
    启动SSH服务
    service sshd start
    ssh命令用法
    ssh -f [-o option] [-p port] [username@]IP command
    -f :结合command使用,让ssh命令执行结束,而command在远程主机后台运行
    -o 选型
    ConnectTimeout=N,N表示秒数
    StrictHostKeyChecking=[yes|no|ask],默认是ask,而no则表示远程主机的公钥直接写入到本地~/.ssh/known_hosts,在脚本中非常好用
    -p 指定非默认端口
    举例:
    ssh -f centos@127.0.0.1 find / &> ~/find1.log
    rm ~/.ssh/known_hosts
    ssh -o StrictHostKeyChecking=no centos@127.0.0.1 find
    sftp交互式文件传输命令
    传输指令
    上传:put [本地文件或目录] [远程目录路径]
    下载:get [远程目录或文件] [本地文件或目录]
    支持通配符,如get *.bak
    本地指令:开头带l
    lpwd lmkdir lcd lls
    远程指令:
    pwd 
    mkdir rename ln
    rmdir rm 
    cd ls 
    chgrp chown chmod
    exit bye quit
    举例:
    将本地的/etc/ssh/ssh_host*.pub上传到远程服务器的/tmp目录,并将远程服务器的.ssh/known_hosts下载到本地/tmp目录
    sftp> pwd
    sftp> cd /etc/ssh
    sftp> ls
    sftp> lpwd
    sftp> lcd /tmp
    sftp> get ssh_host*.pub
    sftp> lls 
    sftp> lcd /home/centos/.ssh/
    sftp> cd /tmp
    sftp> put known_hosts 
    sftp> ls
    scp非交互式文件传输命令,异地备份
    上传:scp [-pr] [-l speed] file [username@]ip:path
    下载:scp [-pr] [-l speed] [username@]ip:file path
    -p 保留文件权限
    -r 对目录递归处理
    -l 速率,单位K/bit,800表示100K/B
    举例:
    将一个10M的文件备份到远程主机
    dd if=/dev/zero of=10M.txt bs=1M count=10
    scp 10M.txt root@127.0.0.1:/tmp
    SSH的图形客户端
    ssh客户端xshell使用举例
    界面显示中文时常常出现乱码,怎么办?需要从三方面着手确保编码兼容
    -文件内容编码
    -shell环境编码(LANG变量)
    -Xshell编码设置
    常用设置
    指定使用SSH V2登录
    缓冲区大小 10000行
    字体名、字体大小、编码
    通过密钥认证实现ssh、scp以及sftp无密码登录
    最快创建SSH互信的方式
    -确保C端和S端家目录下没有.ssh目录
    -在C端执行如下命令,交互过程一直按回车默认生成.ssh下的密钥对id_rsa和id_rsa.pub
    ssh-keygen
    -在C端执行如下命令将公钥传给S端
    ssh-copy-id -i .ssh/id_rsa.pub root@127.0.0.1
    最慢创建SSH互信的方式
    在客户端生成密钥对并将公钥发送给服务器端
    mkdir .ssh
    touch .ssh/known_hosts
    ssh-keygen
    chmod 700 .ssh && chmod 600 .ssh/id_rsa && chmod 644 .ssh/{id_rsa.pub,known_hosts}
    scp .ssh/id_rsa.pub root@127.0.0.1:/tmp
    在服务器端设置号客户端公钥的文件名和权限即可
    mkdir .ssh
    cat /tmp/id_rsa.pub >> .ssh/authorized_keys
    chmod 700 .ssh && chmod 600 .ssh/authorized_keys 
    更安全的SSH
    SSH只是做了传输加密,但是其服务本身并不安全,需要对其限制访问范围
    SSH配置增强:
    可设置项,按顺序设置/etc/ssh/sshd_config
    PermitRootLogin
    DenyUsers
    AllowUsers
    DenyGroups
    AllowGroups

    下面这个是禁止root用户、dev用户和test组登录的配置信息,日志见/var/log/secure
    登录提示如下:
    Permission denied, please try again.
    日志信息如下:
    Failed password for root from 127.0.0.1 port 51478 ssh2
    User dev from 127.0.0.1 not allowed because listed in DenyUsers
    User test from 127.0.0.1 not allowed because a group is listed in DenyGroups
    配置项目如下:
    PermitRootLogin no
    DenyUsers dev
    DenyGroups test
    TCP wrapper(简化版的iptables)
    样例:只允许172.16.0.1以及192.168.68.0网段的用户登录
    /etc/host.allow
    sshd: 172.16.0.1 192.168.68.0/255.255.255.0
    /etc/host.deny 
    sshd: ALL
    iptables
    样例:只允许172.16.0.1主机访问,禁止192.168.68.0/24网段的主机访问
    iptables -A INPUT -i eth2 -s 192.168.68.0/24 -p tcp --dport 22 -j DROP
    iptables -A INPUT -i eth0 -s 172.16.0.1 -p tcp --dport 22 -j ACCEPT
    Xdmcp

    通过Xdmcp协议,在windows上利用xbrowser打开远程的Linux桌面
    相关概念请参考:
    http://linux.vbird.org/linux_basic/0590xwindow.php
    http://linux.vbird.org/linux_server/0310telnetssh.php#xdmcp_theory
    配置和使用过程
    Linux上配置Xdmcp服务端
    yum groupinstall "Desktop" "Desktop Platform" "X Window System"
    vim /etc/gdm/custom.conf 修改的主要配置项如下
    [security]
    AllowRemoteRoot=yes
    DisallowTCP=false
    [xdmcp]
    Enable=true
    Post=177
    gdm & 
    //如果启动失败,提示如果错误
    //** (gdm-binary:7252): WARNING **: Couldn't connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
    //请使用service messagebus start启动服务
    netstat -tulnp
    //udp  0   0 0.0.0.0:177    0.0.0.0:*                 7441/gdm-binary
    //tcp  0   0 0.0.0.0:6000   0.0.0.0:*     LISTEN      7453/Xorg
    //6000端口是DisallowTCP=false所启用的,177端口才是我们想要的
    iptables -A INPUT -p UDP -i eth0 --dport 177 --sport 1024:65534  -s 172.16.0.0/24 -j ACCEPT
    windows上配置Xdmcp客户端
    启动Xmanager下的Xbrowser,在Xdmcp下会自动发现能连接的主机,双击打开就能开到界面了
    VNC

    相比Xdmcp省去很多防火墙端口设置的复杂度。默认情况下,一用户对应一个VNC服务。
    下面是的例子是说明如何启动,连接和关闭VNC服务。注意,你需要那个用户的VNC服务就切换到该用户来启动VNC服务
    安装和启动centos6上的vncserver
    yum -y install tigervnc-server
    vncserver :n #n在0-10范围,启动5901端口接收对窗口1的请求,5902端口对应窗口2,以此类推;下一步设置vnc密码
    vncpasswd #修改vnc密码
    iptables -A INPUT -i eth0 -s 172.16.0.0/24 -p tcp --dport 5900:5910 -j ACCEPT
    用windows上的realvnc连接VNC
    在VNC server中输入 $vncIP:n,也就是输入vnc服务器的IP和窗口号
    输入VNC密码
    关闭centos6上的vncserver
    vncserver -kill :1
    这是VNC开机启动的例子
    vim /etc/sysconfig/vncservers
    VNCSERVERS="2:myusername" #窗口2被myusername
    VNCSERVERARGS[3]="-geometry 1920x1080 -nolisten tcp" #窗口2的设置参数
    chkconfig vncserver on
    service vncserver start
    这是VNC教学同步的配置方法:
    http://pincer.blog.51cto.com/5759011/1617388/




  • 相关阅读:
    在chrome上隐藏video的option按钮
    使用POST请求实现页面的跳转
    Write Sling Servlet using a resource type and selector
    HTL里面使用sling model的时候传参问题
    使用querybuilder做忽略大小写查询的例子
    AEM上的一个图片转换工具
    Oracle的Rman差异增量备份
    HDFS
    使用ROBOCOPY定时增量备份文件
    SOAP详解
  • 原文地址:https://www.cnblogs.com/tsw1107/p/5e046e7f4aa25d649baebd84caca4d98.html
Copyright © 2011-2022 走看看