Szybkie połączenia FTP w Midnight Commanderze przez hotlistę i .netrc
Zapisz serwery FTP w hotliście mc i pozwól mu logować się automatycznie dzięki ~/.netrc — bez wpisywania hasła i bez trzymania go w skrócie.
Problem
Midnight Commander potrafi się łączyć z FTP/SFTP przez wbudowany VFS, ale wpisywanie pełnego URL-a z hasłem za każdym razem jest uciążliwe i niebezpieczne — hasło ląduje w historii powłoki i panelu mc. Cel: jedno kliknięcie na klienta, bez hasła w skrócie, ale też bez pytania o nie przy każdym połączeniu.
Rozwiązanie to kombinacja dwóch mechanizmów: hotlisty mc (Ctrl+\) na skróty do hostów i pliku ~/.netrc na poświadczenia.
Łączenie z FTP w mc — podstawy
Najprostszy sposób to wpisanie w panelu (po Ctrl+O żeby pokazać linię poleceń):
cd /#ftp:user@host:port/sciezka
Dla SFTP (przez SSH — preferowane, FTP przesyła hasło plaintextem):
cd /#sh:user@host:/sciezka
Można podać hasło w URL-u (user:haslo@host), ale nie warto — od tego są lepsze metody.
Hotlista — Ctrl+\
Hotlista to menedżer zakładek katalogów w mc. Działa też dla VFS-ów typu FTP/SFTP.
Dodanie wpisu z bieżącej lokalizacji
- Połącz się raz:
cd /#ftp:pawel@ftp.example.com/var/www - Naciśnij
Ctrl+\ - Wybierz "Dodaj bieżący"
- Nadaj etykietę, np.
Klient X — FTP produkcja
Dodanie wpisu ręcznie
W oknie hotlisty wybierz "Nowy wpis" i jako ścieżkę podaj URL VFS bez hasła:
/#ftp:pawel@ftp.example.com/var/www
albo:
/#sh:pawel@server.example.com:/home/pawel
Plik hotlisty
Wszystko siedzi w zwykłym tekstowym:
$cat ~/.config/mc/hotlist
Ten plik nie zawiera haseł (jeśli ich tam nie wpiszesz), więc spokojnie można go wersjonować w dotfiles albo synchronizować między maszynami.
~/.netrc — automatyczne logowanie
Standardowy uniksowy plik z poświadczeniami, czytany przez ftp, curl, wget, lftp i mc. Format:
machine ftp.example.com
login pawel
password tajneHaslo
machine ftp.innyklient.pl
login admin
password inneHaslo
Uprawnienia muszą być restrykcyjne — bez tego narzędzia zignorują plik:
$chmod 600 ~/.netrc
Jak to gra razem
- W hotliście (
Ctrl+\) wybierasz wpis typu/#ftp:pawel@ftp.example.com/var/www - mc widzi, że w URL-u nie ma hasła
- Zagląda do
~/.netrc, znajdujemachine ftp.example.com - Loguje się automatycznie
Efekt: hotlista bez sekretów (do gita), hasła lokalnie z chmod 600, jedno wciśnięcie Ctrl+\ zamiast wpisywania URL-a.
Bonus — zarządzanie aktywnymi połączeniami
Żeby zobaczyć i zwolnić aktywne połączenia VFS w mc:
F9 → Polecenia → Aktywne wirtualne systemy plików
Przydaje się, gdy serwer zawiesi sesję i mc trzyma martwe połączenie.
Co się dzieje pod spodem
mc używa swojego VFS (Virtual File System) — ftpfs dla FTP i shell (przez ssh) dla SFTP. Składnia /#ftp:... i /#sh:... to wewnętrzne ścieżki VFS, które mc parsuje przed nawiązaniem połączenia. Przy braku hasła w URL-u, biblioteka FTP-owa mc próbuje standardowych mechanizmów uwierzytelniania — w tym ~/.netrc. Hotlista to po prostu lista takich ścieżek z etykietami, więc dziedziczy całą logikę VFS-u "za darmo".