http://wl500g.info/showpost.php?p=55173&postcount=8Сделать доступным ssh из интернета ... + сделать ограничение на количество попыток коннекта
http://wl500g.info/showpost.php?p=55173&postcount=8Сделать доступным ssh из интернета ... + сделать ограничение на количество попыток коннекта
Никак не удается подружить cron с rsnapshot (а если быть точнее то с rsync).
В наличии имеется настроенный rsnapshot. Соединение идет через ssh с публичным ключом.
При запуске из командной строки:
rsnapshot daily
Все прекрасно работает, лог:
Если тоже самое сделать из крона, то появляются непонятные ошибки.Code:[18/May/2008:12:21:43] /opt/bin/rsnapshot daily: started [18/May/2008:12:21:43] echo 4953 > /var/run/rsnapshot.pid [18/May/2008:12:21:43] /opt/bin/cp -al /home/backup/daily.0 /home/backup/daily.1 [18/May/2008:12:23:58] /opt/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh -i /home/backup/keys/pub-key user@host.ru:/home /home/backup/daily.0/host.ru/ [18/May/2008:12:29:38] touch /home/backup/daily.0/ [18/May/2008:12:29:38] rm -f /var/run/rsnapshot.pid [18/May/2008:12:29:38] /opt/bin/rsnapshot daily: completed successfully
Мой crontab (admin переименован в root):
Из системного лога видно, что крон запустил задачу. HDD шуршит пару минут, пока отрабатывает /opt/bin/cp, но как только дело доходит до rsync, последний отказывается работать.Code:SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin MAILTO="" HOME=/ # ---------- ---------- Default is Empty ---------- ---------- # 48 12 * * * root rsnapshot daily
Вот лог rsnapshot:
Лог rsync:Code:[18/May/2008:12:48:05] /opt/bin/rsnapshot daily: started [18/May/2008:12:48:05] echo 4988 > /var/run/rsnapshot.pid [18/May/2008:12:48:05] mv /home/backup/daily.1/ /home/backup/daily.2/ [18/May/2008:12:48:05] /opt/bin/cp -al /home/backup/daily.0 /home/backup/daily.1 [18/May/2008:12:50:50] /opt/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --log-file=/opt/var/log/rsync --rsh=/usr/bin/ssh -i /home/backup/keys/pub-key user@host.ru:/home /home/backup/daily.0/host.ru/ [18/May/2008:12:50:52] /opt/bin/rsnapshot daily: ERROR: /opt/bin/rsync returned 12 while processing user@host.ru:/home/ [18/May/2008:12:50:55] touch /home/backup/daily.0/ [18/May/2008:12:50:55] rm -f /var/run/rsnapshot.pid [18/May/2008:12:50:55] /opt/bin/rsnapshot daily: ERROR: /opt/bin/rsnapshot daily: completed, but with some errors
Проверял несколько раз. Из командной строки работает, через крон не хочет. Рыл много в сети, куча ссылок с подобными проблемами, но либо вразумительного решения нет, либо ошибки, которых в своем случае я не наблюдаю. Часто проблемы с кроном возникают из-за того что многие переменные окружения в crontab не работают, но вроде все пути указаны полностью.Code:2008/05/18 12:50:52 [4993] rsync: connection unexpectedly closed (0 bytes received so far) [receiver] 2008/05/18 12:50:52 [4993] rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.2]
P.S. название хоста и пользователя изменены на user@host.ru
Last edited by japplegame; 18-05-2008 at 10:25.
После нескольких дней непрерывных боев с rsync, стоило только запостить проблему на форум, как неожиданно удалось найти грабли.
Оказывается бузил не rsync, а ssh. Дело в том, что ssh перед соединением желает удостовериться можно ли вообще соединяться с указанным хостом. Я, зная об этой привычке ssh, заблаговременно поместил в файлик ~/.ssh/known_hosts (в моем случае ~ = /usr/local/root) соответствующую строку для нужного хоста. Поэтому из командной строки все прекрасно работало. А при запуске через крон, этот файл терялся, так как переменная HOME указывала совсем на другое место. Вылечилось изменением в crontab строки HOME=/ на HOME=/usr/local/root
Господа, ситуация такая: Требуется сделать туннель между компьютером за NAT'ом и роутером.
Для доступа к radmin на удаленном компе. Т.е.
Роутер слушает входящие подключения
На удаленном ПК запускается plink (консольный putty), который коннектится к роутеру и делает туннель.
Реализация такова:
На роутере запущен dropbear (так
На компьютере запускаетсяCode:#тут вопрос, нужен ли флаг -a ? dropbear -m -a -p 443
и при этом делает туннель. При обращении к роутеру по адресу 172.20.1.1 (внутренний) на порт 8087,Code:plink -P 443 -v -ssh -l loginXXX -pw passwordXXX -T -N -noagent -R 172.20.1.1:8087:127.0.0.1:8088 hostanmeXXX.homedns.org
идет туннельный коннект к сервису на удаленном компьютере на порту 8088.
Для тестов запускаю NetCat для Windows:
Так вот проблема: если я использую логипасс админа-рута роутера, то все работает отлично. А вот создать пользователя не получается.Code:nc -v -vv -p 8088 -L -s 127.0.0.1
(ессно, файлы сохраняются при ребуте)Code:[XxX@router root]$ cat /etc/group root:x:0:XxX nobody:x:99: port_tunnels:x:200:yyy1,yyy2,yyy3,yyy4,yyy5 [XxX@router root]$ cat /etc/passwd XxX:hash1hash1hash1hash1:0:0:root:/usr/local/root:/bin/sh nobody:x:99:99:nobody:/:/sbin/nologin yyy1:hash2hash2hash2hash2:201:200:Remote Tunnel N1:/opt:/sbin/nologin
При коннекте пишет
Подскажите, как быть? Хочется чтобы у юзера было как можно меньше прав.Code:plink -P 443 -v -ssh -l yyy1 -pw pass_yyy1 -T -N -noagent -R 172.20.1.1:80:127.0.0.1:8088 xxxhost.homedns.org Looking up host "xxxhost.homedns.org" Connecting to 111.111.111.111 port 443 Server version: SSH-2.0-dropbear_0.49 We claim version: SSH-2.0-PuTTY_Release_0.60 Using SSH protocol version 2 Using Diffie-Hellman with standard group "group1" Doing Diffie-Hellman key exchange with hash SHA-1 Host key fingerprint is: ssh-rsa 1040 b4:27:d7:ca:44:02:66:54:da:22:62:8f:aa:47:f6:9f Initialised AES-256 CBC client->server encryption Initialised HMAC-SHA1 client->server MAC algorithm Initialised AES-256 CBC server->client encryption Initialised HMAC-SHA1 server->client MAC algorithm Using username "yyy1". Sent password Access denied Access denied Disconnected: Unable to authenticate
UPD: Решено: нужно пользователю прописать шелл /bin/true (вместо /sbin/nologin), затем в /etc/shells добавить строки с шеллами, которые используются, не забыв про /bin/sh (если его не добавить, невозможно будет зайти под рутом Через ssh. Если все же сделали такую ошибку, зайдите через web-интерфейс и rm /etc/shells ). Теперь если пользователь зайдет с помощью вышеописаной команды проброса порта, все будет ОК, а если с помощью обычного консольного захода, то консоль закроется сразу после авторизации.
Last edited by FilimoniC; 17-06-2008 at 07:34.
Sorry for my bad English.
Покупайте Отечественных Слонов!!!
Нашел проблему:
Посоветуйте, что написать в качестве шелла? Пробовал /sbin/nologin, но такого файла нету и он матерится. Пробовал /bin/netstat и /bin/true, то же самое. с /bin/sh все хорошо, но мне нужно чтобы шелла у данного логина не былоCode:Jun 16 14:22:55 dropbear[145]: user 'yyy1' has invalid shell, rejected
Last edited by FilimoniC; 16-06-2008 at 13:44.
Sorry for my bad English.
Покупайте Отечественных Слонов!!!
Думаю надо написать /bin/false.
Спасибо, только добил роутер :-)
А потом нашел вот это: http://wl500g.info/showpost.php?p=80019&postcount=9 :_))
6opoga, поправьте свой пост плиз, а то еще кто-нибудь споткнется :-)
Last edited by FilimoniC; 16-06-2008 at 14:32.
Sorry for my bad English.
Покупайте Отечественных Слонов!!!
День добрый, уважаемые!
Возник такой вопрос. Имею место на rsync.net, которое используется для бэкапов. Они его отдают по sftp/sshfs/webdavS.
Возникла необходимость в домашней сетке за wl500gP v2 сделать доступ к этому аккаунту.
Хотел бы примонитровать к раутеру через sshfs или webdavs удаленную ФС и раздать её с раутера через самбу.
Возможно ли это? Как на раутере скажется копирование через эту связку больших файликов?
Может быть какой-то метод лучше/хуже.
Крайне благодарен за совет и помощь.
Никто не сталкивался с похожим?
FUSE, кажется, не работает...
Здравствуйте!
Существует задача, войти от имени обычного пользователя по SSH без пароля используя ключ. Как это сделать для входа под рутом, я уже разобрался. Теперь не могу разобратся как сделать то-же но для входа без пароля от имени обычного пользователя (который прописан в /etc/passwd)
Что имеем:
Сервер - это мой ASUS WL-500gPremium
Клиент - это мой домашний ПК
Сгенерированные мною ключи - id_dsa - для рута, id_dsa_maxim - для пользователя maxim. Я делал так:
На клиенте:
На сервере:maxim@localhost:~$ ssh-keygen -t dsa
<...>
maxim@localhost:~$ scp ~/.ssh/id_dsa_maxim.pub maxim@192.168.1.2:/opt/home/maxim
maxim@192.168.1.2's password:
id_dsa_maxim.pub 100% 605 0.6KB/s 00:00
maxim@localhost:~$
Проверяю на клиенте:maxim@OpenWrt:~$ mkdir .dropbear
maxim@OpenWrt:~$ cat id_dsa_maxim.pub >> .dropbear/authorized_keys
maxim@OpenWrt:~$ rm id_dsa_maxim.pub
maxim@OpenWrt:~$ chmod 0600 .dropbear/authorized_keys
maxim@OpenWrt:~$ ln -s .dropbear dropbear
maxim@OpenWrt:~$ ls -al
drwxr-xr-x 5 maxim maxim 4096 Jul 6 10:29 .
drwxr-xr-x 4 root root 4096 Jan 1 2000 ..
-rw-r--r-- 1 maxim maxim 16 Jul 6 10:23 .ash_history
drwxr-xr-x 2 maxim maxim 4096 Jul 6 10:28 .dropbear
drwxr-xr-x 7 maxim maxim 4096 Jan 1 2000 Archive
drwxr-xr-x 2 maxim maxim 4096 Jan 1 2000 Torrents
lrwxrwxrwx 1 maxim maxim 9 Jul 6 10:29 dropbear -> .dropbear
-rw-r--r-- 1 root root 61517918 Apr 17 11:13 linux-2.6.25.tar.gz
-rw-r--r-- 1 root root 381866 Jul 5 23:59 nixxx.zip
maxim@OpenWrt:~$ ls -l .dropbear
-rw------- 1 maxim maxim 605 Jul 6 10:28 authorized_keys
-----------------------------------------
Для входа под пользователем требует пароля:
При этом для рута всё работает:maxim@localhost:~$ ssh -i /home/maxim/.ssh/id_dsa_maxim maxim@192.168.1.2
maxim@192.168.1.2's password:
Permission denied, please try again.
maxim@192.168.1.2's password:
Но мне надо чтобы под обычным пользователем можно было входить без пароля. Как это сделать?maxim@localhost:~$ ssh -i /home/maxim/.ssh/id_dsa root@192.168.1.2
BusyBox v1.4.2 (2007-08-08 08:29:39 CDT) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
root@OpenWrt:~# exit
Connection to 192.168.1.2 closed.
ASUS WL-500gPremium V1; Прошивка X-Wrt (openwrt-brcm-2.4-squashfs.trx); JID: anterior@im.flosoft.biz
а... блин. Всё, разобрался. Нужно было каталог называть как ".ssh" на сервере а не ".dropbear"
Теперь работает
ASUS WL-500gPremium V1; Прошивка X-Wrt (openwrt-brcm-2.4-squashfs.trx); JID: anterior@im.flosoft.biz
Чтоб не плодить тем, спрошу здесь...
Проблема в том, что сделав практически всё как описано выше, за исключением того, что генерился rsa-ключ, а не dsa и authorized_keys для пользователя admin (суперпользватель на роутере определен как root) лежит в /opt/home/admin/.ssh - я могу войти на сервер (читай ASUS WL-500gP) лишь по telnet. Ssh не принимает пароль и после трех попыток говорит "Permission denied".
Пользователь admin заведен в /etc/passwd, пароль и права ему нарезаны, группа определена как root (0).
Куда копать, друзья?
Во! И я разобрался... Вопрос снят. В файле /etc/passwd у юзверя admin в качестве shellа поставил bash. Вот он и ругался.
Создал файл /etc/shells, занес туда две строки
Файл /etc/shells внес в /usr/local/.filesCode:/opt/bin/bash /bin/sh
Все заработало.
dropbear в WL500gpv2-1.9.2.7-d-r1222.trx
авторизацию по ключу как ссхсервер умеет, как клиент (на внешний SSH сервер, или на самого же себя) - нет (по паролю все ОК).
это баг\фича, или я не нашел куда ему клиентский ключ всунуть?
с внешней SSH все ОК