openwrt 设置ssh
17 December 2023
OpenWrt 设置ssh 无密码登录注意点
- 一般linux设置使用的是
sshd作为服务端,而OpenWrt使用dropbear作为服务端;sshd作为服务端,~/.ssh/authorized_keys中加入公钥即可。- 使用诸如
ssh-copy-id -i .ssh/id_ed25519.pub [email protected]命令加入公钥。
- 使用诸如
dropbear作为服务端,~/.ssh/authorized_keys并不生效。其实,dropbear的公钥存储文件是600权限的/etc/dropbear/authorized_keys文件,只需将公钥加入此文件即可。至于其它,与sshd类似。- 使用
ssh-keygen -t rsa -b 4096创建公私钥; - 使用
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> /etc/dropbear/authorized_keys"将公钥加入。
- 使用
如果 ssh 登录报错 Permissions 0777 for ‘/var/services/homes/luowei/.ssh/id_rsa’ are too open. 将私钥文件的权限设置为 600,使其仅对所有者可读写,解决:
chmod 600 /var/services/homes/luowei/.ssh/id_rsa
** backup_memos.sh 案例**
#!/bin/bash
REMOTE_HOST="192.168.11.1"
REMOTE_USER="root"
REMOTE_DIRECTORY="~/docker"
REMOTE_REPO="memos"
LOCAL_BACKUP_DIRECTORY="/volume1/data/备份/docker_data"
# 构建备份文件名
BACKUP_FILENAME="$REMOTE_REPO.$(date +'%Y%m%d-%H%M%S').tar.gz"
ssh "$REMOTE_USER@$REMOTE_HOST" \
"cd $REMOTE_DIRECTORY && tar -czf $BACKUP_FILENAME $REMOTE_REPO"
# 使用 rsync 命令备份远程服务器上的文件到本地
rsync -avz -e "ssh -o StrictHostKeyChecking=no" \
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIRECTORY/$BACKUP_FILENAME" "$LOCAL_BACKUP_DIRECTORY/$BACKUP_FILENAME"
ssh 无密码登录linux
使用 ssh-keygen -o -f /to/path/ssh_key 生成一对公私钥,将公钥内容复制到服务器的$HOME/.ssh/authorized_keys 。
方法一、直接复制
1、将公钥复制到服务器的root用户下的.ssh文件夹(用哪个用户登录就复制到哪个用户下的.ssh文件夹下)
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/
2、安装公钥 登录到服务器 cd /root/.ssh/
cat id_rsa.pub >> authorized_keys
方法二、使用ssh-copy-id命令复制(推荐)
一个命令直接就ok了
ssh-copy-id [email protected]
验证
不用输入密码则成功,否则失败
注意事项
上面操作测试过是没有问题的, linux的版本和使用的用户不同会有差别的。如果出现问题可以考虑以下两点:
1、id_rsa.pub和authorized_keys的文件权限问题
chmod 600 authorized_keys
chmod 700 ~/.ssh
2、ssh的配置文件
vim /etc/ssh/sshd_config
#启用 RSA 认证,默认为yes
RSAAuthentication yes
启用公钥认证,默认为yes
PubkeyAuthentication yes
#root用户ssh登录
PermitRootLogin yes
(一般情况下这些配置缺省不需修改的)
