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

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

2015年06月25日 17:37:49 bytxl 阅读数:20970更多

 

简单的说 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/

Linux 从源码编译安装 OpenSSH的更多相关文章

  1. Linux下源码编译安装rpy2

    R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...

  2. Linux 下源码编译安装 vim 8.1

    前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...

  3. Linux系统 - 源码编译安装Nginx

    什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...

  4. 基于源码编译安装openssh

     最近的,openssl/openssh等相继漏洞的暴露,让暴露在公网的linux.沦陷为肉鸡的正营... 没办法,还是升级版本... 00.openssh简介 OpenSSH 是一组安全远程的连接工 ...

  5. 在Linux下源码编译安装GreatSQL/MySQL

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...

  6. Linux环境源码编译安装SVN

    zhoulf 2015/2/28 原创 安装说明 安装环境:Red Hat Enterprise Linux 安装方式:源码安装 软件:apr-1.5.0.tar.gz.apr-iconv-1.2.1 ...

  7. 1、Linux下源码编译安装PostgreSQL

    操作系统:Centos7 说明:postgresql必须在postgres用户下初始化数据库和启动,否则报错. PostgreSQL的特性 PostgreSQL是一种几乎可以运行在各种平台上的免费的开 ...

  8. Linux httpd源码编译安装

    # wget http://apache.fayea.com/httpd/httpd-2.2.31.tar.bz2 去官网下载源码包 # mv httpd-.tar.bz2 /usr/local/sr ...

  9. Linux系统——源码编译安装

    记得要先去把httpd-2.2.9.tar.gz通过xftp进行文件传输第一步:yum仓库下安装编译环境的支持程序 #yum -y install gcc gcc-c++ make 第二步:将源码包h ...

随机推荐

  1. 使用 TRESTClient 与 TRESTRequest 作为 HTTP Client(转)

    使用 TRESTClient 与 TRESTRequest 作为 HTTP Client 转自:http://www.cnblogs.com/dennieschang/p/6966403.html   ...

  2. DES算法原理完整版

    1.所需参数 key:8个字节共64位的工作密钥 data:8个字节共64位的需要被加密或被解密的数据 mode:DES工作方式,加密或者解密 2.初始置换 DES算法使用64位的密钥key将64位的 ...

  3. MySQL技术内幕读书笔记(五)——索引与算法

    索引与算法 INNODB存储引擎索引概述 ​ INNODB存储引擎支持以下几种常见的索引: B+树索引 全文索引 哈希索引 ​ InnoDB存储引擎支持的哈希索引是自适应的.会根据表的情况自动添加 ​ ...

  4. Git发生SSL certificate problem: certificate ha错误

    这两天,不知道为什么,用Git提交代码到服务器时,总出现SSL certificate problem: unable to get local issuer certificate while ac ...

  5. CTF线下防御战 — 让你的靶机变成“铜墙铁壁”

    本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...

  6. C语言 · 数的划分

    算法训练 数的划分   时间限制:1.0s   内存限制:256.0MB        锦囊1 使用动态规划. 锦囊2 用F[i,j,k]表示将i划分成j份,最后一份为k的方案数,则F[i,j,k]= ...

  7. 大话前端解析Json对象

    一.对于标准的json对象如: var result=[{"flag":1,"macId":"2","mbId":0,& ...

  8. C#高阶与初心:(一)List.Add添加的到底是什么?

    前几日与同事讨论一个相对复杂的场景,需要先将中间过程存储在List中,稍后再用.同时程序类的许多线程共用了一个全局变量. 具体来说就是如下代码 ... _order = order1; _list.A ...

  9. Linux 文件普通权限_011

    一.文件权限10个字符对应类型和权限 二.Linux普通文件和Linux目录读.写.执行权限说明 标注:Linux 中的文件名是存在于父目录的block里面,并指向这个文件的inode节点 1.lin ...

  10. node-sass 安装失败 Failed at the node-sass@4.9.2 postinstall script的解决

    控制台运行npm install时报错,报错信息如下: npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! node-sass@4.9.2 postins ...