一 : Centos6.5 中 ssh免密码登录配置教程
0.说明
这里为了方便说明问题,假设有A和B两台安装了centos6.5的主机。目标是实现A、B两台主机分别能够通过ssh免密码登录到对方主机。不同主机的配置过程一样,这里介绍A主机的配置过程。
事先在AB主机分别创建好要免密码登录的用户名,在/etc/hosts文件增加主机名和ip。
创建新用户:useradd jay
设置密码:passwd jay,输入自己想要的密码即可,之后su jay切换用户
修改主机名:vim /etc/sysconfig/network,加入hostname=master,注销系统之后即可看到修改成功
修改hosts文件:vim /etc/hosts
192.168.88.101 master
192.168.88.102 slave1
1.环境设置
1.1 关闭防火墙(root权限)
centos6.5对网络管理相当严格,需要关闭selinux。到/etc/selinux/config下,把SELINUX=enforcing修改为SELINUX=disabled 。需要root权限。
bash/shell Code复制内容到剪贴板
找到SELINUX并修改为SELINUX=disable
1.2 修改sshd的配置文件(root权限)
bash/shell Code复制内容到剪贴板
1.3 重启sshd服务(root权限)
bash/shell Code复制内容到剪贴板
2.本机生成公钥和私钥
从root切换回要免密码登录的用户jay,执行命令。
bash/shell Code复制内容到剪贴板
默认在用户jay的家目录(~/.ssh/)生成两个文件:
id_rsa: 私钥
id_rsa.pub:公钥
3.把公钥导入到认证文件
3.1 导入到本机
bash/shell Code复制内容到剪贴板
完成这一步,再按照步骤4修改相关文件权限,可以免密码登录本机。可以输入以下命令验证。
bash/shell Code复制内容到剪贴板
如果能够登录,即验证成功。
3.2 导入到目标主机
3.2.1在本机操作,传送到目标主机
bash/shell Code复制内容到剪贴板
注意把文件传送到目标主机时,要用root用户,否则会因权限不够而拒绝。输入目标主机密码后,出现OK即传输成功。
3.2.2 登录到目标主机,把公钥导入到认证文件
使用要被免密码登录的用户名jay,登录到目标主机。然后执行以下操作。
bash/shell Code复制内容到剪贴板
再按照步骤4修改相关文件权限,完成免密码登录设置。
4.更改相关文件的权限
bash/shell Code复制内容到剪贴板
至此,完成免密码登录设置。
5. 测试
A主机(jay@master),B主机(jay@slave1)。在A主机,切换为jay用户,执行以下命令测试:
ssh slave1
能够免密码直接登录,即设置成功。如果出错,请仔细检查以上各个步骤。
以上所述是小编给大家介绍的Centos6.5 中 ssh免密码登录配置教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对61阅读网站的支持!
二 : Linux系统中SSH命令的使用教程
ssh用于登录远程主机, 并且在远程主机上执行命令,它的目的是替换rlogin和rsh,同时在不安全的网络之上,两个互不信任的主机之间, 提供加密的, 安全的通信连接.先来看一下ssh命令的一些参数:
参数
-a
禁止转发认证代理的连接.
-A
允许转发认证代理的连接. 可以在配置文件中对每个主机单独设定这个参数.
代理转发须谨慎. 某些用户能够在远程主机上绕过文件访问权限 (由于代理的 UNIX 域 socket), 他们可以通过转发的连接访问本地代理. 攻击者不可能从代理获得密钥内容, 但是他们能够操作这些密钥, 利用加载到代理上 的身份信息通过认证.
-b bind_address
在拥有多个接口或地址别名的机器上, 指定收发接口.
-c blowfish|3des|des
选择加密会话的密码术. 3des 是默认算法. 3des (triple-des) 用三支不同的密钥做加密-解密-加密三次运算, 被认为比较可靠. blowfish 是一种快速的分组加密术(block cipher), 非常安全, 而且速度比 3des 快的多. des 仅支持 客户端, 目的是能够和老式的不支持 3des 的协议第一版互操作. 由于其密码算法上的弱点, 强烈建议避免使用.
-c cipher_spec
另外, 对于协议第二版, 这里可以指定一组用逗号隔开, 按优先顺序排列的密码术. 详见 Ciphers
-e ch|^ch|none
设置 pty 会话的 escape 字符 (默认字符: `~' ) . escape 字符只在行首有效, escape 字符后面跟一个点 (`.' ) 表示结束连接, 跟一个 control-Z 表示挂起连接(suspend), 跟 escape 字符自己 表示输出这个字符. 把这个字符设为 ``none 则禁止 escape 功能, 使会话完全透明.
-f
要求 在执行命令前退至后台. 它用于当 准备询问口令或密语, 但是用户希望它在后台进行. 该选项隐含了 -n 选项. 在远端机器上启动 X11 程序的推荐手法就是类似于 ssh -f host xterm 的命令.
-g
允许远端主机连接本地转发的端口.
-i identity_file
指定一个 RSA 或 DSA 认证所需的身份(私钥)文件. 默认文件是协议第一版的 $HOME/.ssh/identity 以及协议第二版的 $HOME/.ssh/id_rsa 和 $HOME/.ssh/id_dsa 文件. 也可以在配置文件中对每个主机单独指定身份文件. 可以同时使用多个 -i 选项 (也可以在配置文件中指定多个身份文件).
-I smartcard_device
指定智能卡(smartcard)设备. 参数是设备文件, 能够用它和智能卡通信, 智能卡里面存储了用户的 RSA 私钥.
-k
禁止转发 Kerberos 门票和 AFS 令牌. 可以在配置文件中对每个主机单独设定这个参数.
-l login_name
指定登录远程主机的用户. 可以在配置文件中对每个主机单独设定这个参数.
-m mac_spec
另外, 对于协议第二版, 这里可以指定一组用逗号隔开, 按优先顺序排列的 MAC(消息验证码)算法 (message authentication code). 详情以 MACs 为关键字查询.
-n
把 stdin 重定向到 /dev/null (实际上防止从 stdin 读取数据). 在后台运行时一定会用到这个选项. 它的常用技巧是远程运行 X11 程序. 例如, ssh -n shadows.cs.hut.fi emacs 将会在 shadows.cs.hut.fi 上启动 emacs, 同时自动在加密通道中转发 X11 连接. 在后台运行. (但是如果 要求口令或密语, 这种方式就无法工作; 参见 -f 选项.)
-N
不执行远程命令. 用于转发端口. (仅限协议第二版)
-o option
可以在这里给出某些选项, 格式和配置文件中的格式一样. 它用来设置那些没有命令行开关的选项.
-p port
指定远程主机的端口. 可以在配置文件中对每个主机单独设定这个参数.
-q
安静模式. 消除所有的警告和诊断信息.
-s
请求远程系统激活一个子系统. 子系统是 SSH2 协议的一个特性, 能够协助 其他应用程序(如 sftp)把SSH用做安全通路. 子系统通过远程命令指定.
-t
强制分配伪终端. 可以在远程机器上执行任何全屏幕(screen-based)程序, 所以非常有用, 例如菜单服务. 并联的 -t 选项强制分配终端, 即使 没有本地终端.
-T
禁止分配伪终端.
-v
冗详模式. 使 打印关于运行情况的调试信息. 在调试连接, 认证和配置问题时非常有用. 并联的 -v 选项能够增加冗详程度. 最多为三个.
-x
禁止 X11 转发.
-X
允许 X11 转发. 可以在配置文件中对每个主机单独设定这个参数.
应该谨慎使用 X11 转发. 如果用户在远程主机上能够绕过文件访问权限 (根据用户的X授权数据库), 他就可以通过转发的连接访问本地 X11 显示器. 攻击者可以据此采取行动, 如监视键盘输入等.
-C
要求进行数据压缩 (包括 stdin, stdout, stderr 以及转发 X11 和 TCP/IP 连接 的数据). 压缩算法和 gzip(1) 的一样, 协议第一版中, 压缩级别 ``level 用 CompressionLevel 选项控制. 压缩技术在 modem 线路或其他慢速连接上很有用, 但是在高速网络上反而 可能降低速度. 可以在配置文件中对每个主机单独设定这个参数. 另见 Compression 选项.
-F configfile
指定一个用户级配置文件. 如果在命令行上指定了配置文件, 系统级配置文件 (/etc/ssh/ssh_config ) 将被忽略. 默认的用户级配置文件是 $HOME/.ssh/config
-L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-D port
指定一个本地机器 ``动态的 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.
-1
强制 只使用协议第一版.
-2
强制 只使用协议第二版.
-4
强制 只使用 IPv4 地址.
-6
强制 只使用 IPv6 地址.
基本用法
最简单的 SSH 命令只需要指定用户名和主机名参数即可. 主机名可以是 IP 地址或者域名. 命令格式如下:
$ ssh user@hostname
$ ssh pi@10.42.0.47
如果你能够成功登陆, 那么下面的内容对你来说就轻而易举了.
使用其他端口
SSH 默认连接到目标主机的 22 端口上,但是由于各种原因你可能需要连接到其他端口.
$ ssh -p 10022 user@hostname
远程执行命令
有时在远程主机执行一条命令并显示到本地, 然后继续本地工作是很方便的. SSH 就能满足这个需求:
$ ssh pi@10.42.0.47 ls -l
挂载远程文件系统
另外一个很赞的基于 SSH 的工具叫 sshfs. sshfs 可以让你在本地直接挂载远程主机的文件系统.
$ sshfs -o idmap=user user@hostname:/home/user ~/Remote
$ sshfs -o idmap=user pi@10.42.0.47:/home/pi ~/Pi
要详细了解可以参考 sshfs 教程.
X11 图形界面
假如现在你想要在远程主机运行一个图形界面的程序, SSH 已经帮你想到了! 用前面提到的 SSH 基本命令加上参数 -X 连接到远程主机即可开启 X11 转发功能. 登录后你可能觉得没什么差别, 但是当你运行一个图形界面程序后就会发现其中的不同的.
$ ssh -X pi@10.42.0.47
$ pistore
$ pistore&
转义字符
SSH 提供了多样的转义字符功能. 用 SSH 连接到任意一台远程主机然后输入 ~? 你就可以看到支持的转义字符和功能说明列表. 以下例子展示了 ~# 和 ~C 的效果.
配置 SSH
如果你需要改变 SSH 的配置, 请用你喜好的文本编辑器打开 /etc/ssh/sshd_config 进行编辑. 比如你想改变登陆的标语, 在配置文件中找到下面这行:
#Banner none
Banner /etc/issue
构建 ssh 密钥对
运行以下命令创建密钥对:
$ ssh-keygen -t dsa
寻找主机密钥
在你准备添加密钥之前不妨先用以下命令看看是否已经添加了对应主机的密钥了.
$ ssh-keygen -F 10.42.0.47
删除主机密钥
某些情况下, 比如主机地址更改或者不再使用某个密钥, 你就可能需要删除某个密钥.
$ ssh-keygen -R 10.42.0.47
总结
通过以上的内容你应该可以轻松使用 SSH 了. SSH 还有很多功能值得你去发掘, 这就要看你的想象力了。
三 : Linux环境中远程开启ssh端口和更改ssh用户根目录
远程密令临时开启ssh端口
nux服务器,我们一般是通过ssh通道远程管理,这就需要我们开启ssh端口,如22。但开启端口有被暴力破解的风险,你会说可以设置复杂的密码或使用证书避免。就算破解不了密码,但openssh也可能会有漏洞,你会说可以更改ssh端口,但还是有可能被扫描出来。还有一种选择,我们可以只允许指定IP访问ssh,通过vpn登录管理服务器,但局限很明显,万一紧急情况vpn登录不上去了怎么办。下面给出一种个人觉得比较满意的解决方案,即使用iptables的recent模块,通过密令临时开启ssh端口。当然,密令需要保管好,防止外泄。
1、iptables规则设定
#指定78字节的icmp数据包(包含IP头部20字节,ICMP头部8字节)通过被加入sshopen列表。
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -m recent --set --name sshopen --rsource -j ACCEPT
iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT
ping -s 50 host
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 123 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m length --length 50 -m recent --set --name sshopen --rsource -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
使用jailkit chroot更改ssh用户根目录
安装jailkit
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
tar xzf jailkit-2.16.tar.gz
cd jailkit-2.16
./configure
make
make install
cp extra/jailkit /etc/init.d/jailkit
chmod u+x /etc/init.d/jailkit
chkconfig jailkit on
jk_init -v -j /home/chroot sftp scp jk_lsh netutils extendedshell
service jailkit start
useradd www.61k.com -m
echo www.61k.com:password | chpasswd
jk_jailuser -m -n -j /home/chroot --shell=/bin/bash www.61k.com
四 : 通过SSH进行密钥认证自动登录Linux服务器
传统的网络服务程序,SSH的英文全称是 Secure Shell,通过使用ssh,可以对所有的传输的数据进行加密,这样既可以防止攻击又可以防止IP欺骗。
SSH 提供2种级别的安全验证
1,基于口令的安全验证,这也是我们常用的一种,只要知道用户名和密码,就可以远程登陆到远程主机上。
2,基于密钥的安全认证,就是说用户必须为自己创建一对密钥,并把公用密钥放到需要访问的服务器上。
2种安全级别的验证,后者相对比前者更安全一些,第二种级别不需要在网络上传递口令。
SSH密钥认证登录配置
原理:用户首先需要为自己创建一对密钥:公钥(用在登录的服务器上)和私钥。OPENSSH 公开的密钥的密码体质有RSA,DSA等,这里就用RSA。
客户端ip:192.168.72.11
服务器ip:192.168.72.129
密钥认证的生成
[root@xyly ~]# ifconfig eth0 | awk ‘/inet addr/{print }’
inet addr:192.168.72.11 Bcast:192.168.72.255 Mask:255.255.255.0</p> <p>[root@xyly ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #密钥报存的位置和名称
Enter passphrase (empty for no passphrase): #密钥为空
Enter same passphrase again: #再一次输入
Your identification has been saved in /root/.ssh/id_rsa. #私钥的位置
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥的位置
The key fingerprint is:
04:c5:7a:57:f6:2e:9c:1f:b5:e7:45:b3:11:f3:c7:18 root@xyly
公钥已经生成
现在把公钥上传到另一台服务器上去。
[root@xyly ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.72.129
The authenticity of host ’192.168.72.129 (192.168.72.129)’ can’t be established.
RSA key fingerp
rint is 3b:26:19:2e:51:ca:cc:de:ac:bc:00:09:f0:7c:7d:f1.
Are you sure you want to continue connecting (yes/no)? yes #由于是第一次登录,服务器要进行确认
Warning: Permanently added ’192.168.72.129′ (RSA) to the list of known hosts.
Address 192.168.72.129 maps to localhost, but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!
root@192.168.72.129′s password:
Now try logging into the machine, with “ssh ‘root@192.168.72.129′“, and check in:</p> <p>.ssh/authorized_keys #把公钥上传的位置和公钥的文件名</p> <p>to make sure we haven’t added extra keys that you weren’t expecting.
登录到服务器上,查看公钥是否上传
[root@localhost ~]# ll .ssh/authorized_keys
-rw——- 1 root root 391 Aug 4 18:31 .ssh/authorized_keys
说明公钥上传成功了。
修改ssh配置文件,设置公钥认证登录
将下边2行的注释去掉,重启ssh服务
RSAAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys</p> <p>/etc/init.d/sshd restart
配置完毕,现在开始登录一下
[root@xyly ~]# ssh 192.168.72.129
Address 192.168.72.129 maps to localhost, but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!
Last login: Thu Aug 4 18:08:05 2011 from 192.168.72.1
[root@localhost ~]#
现在不用输入密码,就可以登录了。退出登录
[root@localhost ~]# exit
logout
Connection to 192.168.72.129 closed.
linux ssh 密钥认证无需输入密码即可登录,在设置密钥的同时,也可以输入密码,即可密码+密钥认证就可以完成!
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1