请稍侯

openwrt 设置ssh

17 December 2023

OpenWrt 设置ssh 无密码登录注意点

  • 一般linux设置使用的是sshd作为服务端,而OpenWrt使用dropbear作为服务端;
    1. sshd作为服务端,~/.ssh/authorized_keys中加入公钥即可。
    2. 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

(一般情况下这些配置缺省不需修改的)