zoukankan      html  css  js  c++  java
  • Linux 从源码编译安装 OpenSSH

    https://blog.csdn.net/bytxl/article/details/46639073

     

    Linux 从源码编译安装 OpenSSH以及各问题解决

    简单的说 OpenSSH 是一组安全远程的连接工具,主要包括了几个部份:ssh、sshd、scp、sftp、ssh-keygen、ssh-agent、ssh-add。OpenSSH 安装配置比较复杂,难点在配置,特别是在 VPS 中,配置不当就完全无法链接 VPS 了。

    一、关于 OpenSSH

    OpenSSH 是一组用于安全地访问远程计算机的连接工具。它可以作为 rlogin、 rsh rcp 以及 telnet 的直接替代品使用。更进一步, 其他任何 TCP/IP 连接都可以通过 SSH 安全地进行隧道/转发。 OpenSSH 对所有的传输进行加密, 从而有效地阻止了窃听、 连接劫持,以及其他网络级的攻击。

    ssh(SSH 客户端,用于登录建立连接,是 rlogin 与 Telnet的安全替代方案)
    sshd (SSH 服务端,典型的独立守护进程)
    scp、sftp (文件安全传输工具,rcp、ftp 安全的替代方案)
    ssh-keygen (用于产生 RSA 或 DSA 密钥)
    ssh-agent、ssh-add(帮助用户不需要每次都要输入金钥密码的工具)

    二、编译前的准备工作

    2.1、查看 OpenSSH 版本

    部分 Linux 系统已默认安装了 OpenSSH,像 Ubuntu Server 10.10 就已安装了 OpenSSH_5.5p1

    1
    
    ssh -v

    2.2、安装 OpenSSL 及编译环境

    必须先安装依赖 OpenSSL,具体见《Linux 从源码编译安装 OpenSSL》 http://www.linuxidc.com/Linux/2011-10/45738.htm

    2.3、备份 OpenSSH 旧配置文件

    1
    2
    3
    
    cp /etc/init.d/ssh /etc/init.d/ssh.old
    cp -r /etc/ssh /etc/ssh.old
    cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys.old

    2.4、卸载旧版 OpenSSH

    1
    
    apt-get purge openssh-client openssh-server

    三、编译安装 OpenSSH

    3.1、关于特权分离

    所谓特权分离(Privilege Separation)实际上是一种 OpenSSH 的安全机制,该特性默认开启,可通过配置文件中的 UsePrivilegeSeparation 指令开启或关闭。

    1
    2
    3
    4
    5
    
    mkdir -p  /var/empty #设置一个空目录
    chown 0:0 /var/empty #所有者和组,0代表"root"
    chmod 000 /var/empty #目录权限设置为"000"
    groupadd sshd #建立sshd组
    useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd #用于特权分离的非特权用户"sshd"

    3.2、编译安装 OpenSSH

    详细编译选项见《OpenSSH-4.7p1 安装指南》

    下载在 http://www.linuxidc.com/Linux/2011-10/45740.htm

    1
    2
    3
    4
    5
    
    wget http://ftp.aso.ee/pub/OpenBSD/OpenSSH/portable/openssh-5.6p1.tar.gz
    tar -zxf openssh-5.6p1.tar.gz
    cd openssh-5.6p1/
    ./configure --prefix=/usr/local --sysconfdir=/usr/local/ssh --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/empty --with-privsep-user=sshd  --with-zlib=/usr/local/lib --with-ssl-engine --with-md5-passwords --disable-etc-default-login
    make && make install

    --prefix 安装目录
    --sysconfdir 配置文件目录
    --with-ssl-dir 指定 OpenSSL 的安装目录
    --with-privsep-path 非特权用户的chroot目录
    --with-privsep-user=sshd 指定非特权用户为sshd
    --with-zlib 指定zlib库的安装目录
    --with-md5-passwords 支持读取经过MD5加密的口令
    --with-ssl-engine 启用OpenSSL的ENGINE支持

    3.3、开机自启动 sshd

    1
    2
    3
    
    mv /etc/init.d/ssh.old /etc/init.d/sshd #使用原来的启动脚本
    vim /etc/init.d/sshd #编辑,然后替换路径。
    update-rc.d mysql defaults
    1
    2
    3
    4
    
    #将原路径"/usr/sbin替换为"/usr/local/sibn"
    :%s/usr/sbin/usr/local/sbin/g
    #将原路径"/etc/ssh替换为"/usr/local/ssh"
    :%s/etc/ssh/usr/local/ssh/g

    四、 OpenSSH 安全配置

    4.1、查看 OpenSSH 配置文件

    1
    
    cd /usr/local/ssh

    moduli #ssh服务器的Diffie-Hellman密钥文件
    ssh_config #ssh客户端配置文件
    sshd_config #ssh服务器配置文件
    ssh_host_dsa_key #ssh服务器dsa算法私钥
    ssh_host_dsa_key.pub #ssh服务器dsa算法公钥
    ssh_host_rsa_key #ssh服务器rsa算法私钥
    ssh_host_rsa_key.pub #ssh服务器rsa算法公钥

    4.2、生成服务器密钥对

    默认 OpenSSH 安装完毕后就自动生成了,如果丢失可通过下面命令重新生成。

    1
    2
    3
    4
    5
    6
    
    ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N '' #适用于ssh-1版
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
     
    chmod 600 /etc/ssh/ssh_host_*
    chmod 644 /etc/ssh/ssh_host_*.pub

    特别注意:

    1、系统密钥对是不能设置密码的, -N 后面 是两个 单引号 !表示密码串为空。
    2、注意公钥和私钥的权限是不同的。

    金步国作品全集CHM电子书:Apache、Linux系统、PostgreSQL、OpenSSH、OpenSSL

    https://www.linuxidc.com/Linux/2011-10/45740.htm

    linux公社资料

    https://linux.linuxidc.com/

  • 相关阅读:
    java。equal()和== 的区别
    java。封装
    java。OOA,OOD,OOR
    java。类和对象
    java、数组;堆区,栈区
    java。 break和continue区别
    NYOJ 228 士兵杀敌(五)【差分标记裸题】
    2017CCPC 杭州 J. Master of GCD【差分标记/线段树/GCD】
    CF1025B Weakened Common Divisor【数论/GCD/思维】
    网络流算法笔记
  • 原文地址:https://www.cnblogs.com/wangziyi0513/p/10268702.html
Copyright © 2011-2022 走看看