白巨斗 发表于 2014-8-29 13:52:09

使用SSH远程登录华硕路由器(Merlin &Tomato)

本帖最后由 白巨斗 于 2014-8-29 14:01 编辑

LinuxOS 远程访问ASUSWRT Merlin固件和 Tomato 固件介绍

1. SSH 登陆原理理解SSH的加密原理要对公钥和私钥有一定的了解,在SSH信息传递过程中公钥为加密秘钥,私钥为解密秘钥。例子:Client用SSH登陆Server,命令"ssh root@ routerWAN IP" ,过程如下,(1)Client连接Server(2)Server返回一个公钥(Public Key)给Client(3)Client用Server返回的公钥对用户的账号和密码进行加密,并发送给Server(4)Server接收到Client发送的加密后的账号和密码信息,用私钥(Privacy Key)进行解密,验证成功
有兴趣的同学可以再研究下数字签名技术,其使用加密秘钥作为私钥,解密秘钥作为公钥。
2. SSH known_hosts文件known_hosts文件用来记录连接过的Server所发送的公钥信息,为什么要将Server发送过来的公钥记录保留在文件中呢?这种做法可以尽量的避免中间人攻击(Man-in-the-middle attack)。中间人攻击:如果存在一个hacker获取到Client发送的SSH登陆请求后,伪造一个包含公钥的数据包发送给Client,Client将用hacker发送的公钥对账号/密码进行加密后,发送给Hacker所用的主机,由此Hacker变获得了Client欲登陆的Server的账号和密码。known_hosts文件记录了原先Client登陆Server时,Server发送给Client的公钥信息,在下一次登陆Server的时候,会将Server这次返回的公钥和known_hosts里面记录的公钥进行比对,如果不同,则会给出如下图提示信息,给用户给出警告.显示的"xx:xx....xx:xx"并不是公钥,而是公钥的md5值。因为公钥比较长,通过known_hosts中Server的公钥的md5值与Server刚返回的公钥的Md5进行比较,则可以确定两个公钥是否一致。当然如果你确定Server没有问题,可以删除掉known_hosts文件(一般在~/.ssh/目录下)里Server ip对应的那一行信息,则可以成功SSH登陆到Server。
3. SSH 实现无密码登陆SSH也提供了基于秘钥的安全验证,该方法不需要Client输入登陆的账号和密码。其原理如下:(1)Client使用命令"ssh-keygen-t rsa"产生一对公钥和私钥(Key Pair),公钥:~/.ssh/id_rsa.pub, 私钥:~/.ssh/id_rsa。(2)将id_rsa.pub里面的公钥添加进Server:~/.ssh/authorized_keys 文件中(3)Client SSH登陆Server,连接Server(4)Server产生一个随机数并且用原先Client给予的公钥进行加密,发送给Client(5)Client接收到Server的反馈的加密后的随机数信息,用私钥解密,并将解密后的结果发送给Server
(6)Server将Client解密的信息与原先产生的随机数进行比对,如果相同,则验证成功
一.ASUSWRT Merlin 固件 (RT-AC68U 刷梅林固件v45版)
使用Authrorized Keys登陆华硕路由器Console指令页面。步骤1: 用 ssh-key-gen 在本地主机上创建公钥和密钥
#ssh-keygen-t rsa

步骤2:设置权限
# cd/root/.ssh
#chmod 700 ~/.ssh
#chmod 600 ~/.ssh/id_rsa
#chmod 644 ~/.ssh/id_rsa.pub

步骤3: 把PC的公钥写入DUT的SHH server的authorized_keys文件
# cat.ssh/id_rsa.pub | ssh admin@Router WAN IP -p22 ‘cat >> .ssh/authorized_keys’
注:若无法成功,可能是known_hosts档案未删除导致,以下指令进行删除,再执行步骤3.
# rm-rf /root/.ssh/known_hosts

步骤4: Linux OS远程访问DUT SSH
#sshadmin@DUT WAN IP -p22 -i ~/.ssh/id_rsa


二.Tomato固件(RT-AC66U刷Shibby 固件v121版)
与Merlin固件不同点在于登录用户梅林用admin(或其他用户自己修改的登陆账号) Tomato Shibby固件则固定用root 步骤1: 用ssh-key-gen 在本地主机上创建公钥和密钥
#ssh-keygen -t rsa

步骤2:设置权限
# cd /root/.ssh
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/id_rsa
# chmod 644~/.ssh/id_rsa.pub

步骤3: 把PC的公钥写入DUT的SHHserver的authorized_keys文件
# cat .ssh/id_rsa.pub | sshroot@IP -p22 ‘cat >> .ssh/authorized_keys’
注:若无法成功,可能是known_hosts档案未删除导致,以下指令进行删除,再执行步骤3.
# rm -rf/root/.ssh/known_hosts

步骤4: Linux OS联机DUT SSH
#ssh root@DUT WAN IP -p22-i ~/.ssh/id_rsa

秋天的小精灵 发表于 2014-8-29 17:02:03

SSH优点是什么?更安全吗?

有事您说话 发表于 2014-8-29 17:21:42

SSH连接比Telnet安全多了。

蛋蛋 发表于 2014-8-30 14:16:06

和直接使用ssh client有什么区别呢?{:2_36:}

白巨斗 发表于 2014-9-2 10:02:39

蛋蛋 发表于 2014-8-30 14:16
和直接使用ssh client有什么区别呢?

有推荐的Windowns Client Tool吗? 可以直接用Authorized keys 登陆的那种(不需要输入密码,用私钥就能登陆)。

我这边还没有试到好用的Windows SSH client软件,使用私钥就能登陆的。
试着用Putty .Tera Term, Bitvise SSH client, Secure CRT,对工具不熟悉,还没有试出来能用Authorized keys 登陆的。

各位坛友请帮忙试试啊
工具我先存到网盘http://yunpan.cn/Q7KFQ5Cvufeec提取码 38bf
页: [1]
查看完整版本: 使用SSH远程登录华硕路由器(Merlin &Tomato)