Я ленивый и потому люблю когда все организовано удобно, без лишних телодвижений. Иногда перебарываю лень, для того чтобы сделать удобно.
Однажды потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.
Под катом — идентичная схема, только с использованием OpenSSH под Windows 10.
У меня схема организована следующим образом:
- На сервере запущена Samba, от имени пользователя www-data расшарена корневая папка с сайтами. Доступ к серверу только через ssh с авторизацией по ключу. Сервер за NATом, порт проброшен только для ssh.
- В процессе входа в аккаунт на домашней машине на Windows 10 через встроенный в систему OpenSSH устанавливается соединение с сервером с авторизацией по ключу.
- Туннелируется порт 445 удаленной машины на локальный порт 44445 сетевого loopback-адаптера доступного по адресу 10.255.255.1
- На loopback-адаптере 10.255.255.1 порт 44445 проксируется на локальный 445. Таким образом при подключении к \10.255.255.1 открывается удаленная шара с файлами (которая, при необходимости монтируется как сетевой диск).
Всё это автоматом – лень торжествует. Безопасно, быстро и нативно выглядит. Любым редактором могу открывать и править файлы на удаленном сервере как у себя на локальном — без проблем с загрузкой правленых файлов и установкой им необходимых разрешений. При этом нет проблем с безопасностью Samba.
Итак – сперва по шагам:
На стороне WINDOWS
Должен быть установлены OpenSSH. В Windows 10 и Windows Server 2019 появился встроенный SSH клиент на основе OpenSSH. Им мы и воспользуемся. Сначала убедимся что он установлен – наберем в командной строке
ssh
Если видим исполнение команды — все «Ок», клиент присутствует в системе.
Шаг 1. Настройка сетевого адаптера
Устанавливаем loopback-адаптер в системе. Мы будем обращаться по адресу к локальному адаптеру.
hdwwiz.exe
Запустится «Мастер установки оборудования» (Здесь я пользуюсь русской Windows 10 Pro).
«Далее» -> «Установка оборудования, выбранного из списка вручную» -> «Сетевые адаптеры» -> «Microsoft –> Адаптер замыкания на себя Microsoft KM-Test» -> «Далее»
Уверен, что эти шаги можно сделать из командной строки, но не нашел способ установки драйвера без devcon.exe, потому и не стал заморачиваться с автоматизацией этого шага.
Далее уже в CMD (от имени Администратора).
netsh interface show interface
Видим появился второй адаптер. У меня он называется Ethernet 2.
Теперь настроим адрес для этого адаптера
Или из командной строки:
netsh interface ip set address name="Ethernet 2" source=static address=10.255.255.1 mask=255.255.255.0
В результате у нас появился адаптер локально доступный по адресу 10.255.255.1
Теперь проблема в том, что нам необходимо получить доступ к общей папке через TCP-порт 445, но при загрузке Windows этот порт захватывается системным драйвером lanmanserver для всех интерфейсов. Отложив запуск драйвера lanmanserver и установив правило portproxy, мы можем обойти это.
Далее в командной строке от имени администратора меняем режим запуска сетевых служб (пробел после «start=» обязателен!!!):
sc config lanmanserver start= demand
sc config iphlpsvc start= auto
и настраиваем для адаптера с адресом 10.255.255.1 проксирование порта 44445 на локальный порт 445
netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 connectaddress=10.255.255.1 connectport=44445
Теперь необходимо перезагрузиться, чтобы схема перехвата порта у службы lanmanserver сработала.
Проверяем что прослушивание порта осуществляется нашим loopback-адаптером, просмотрев открытые в системе порты
netstat -an | find ":445 "
Если мы видим
TCP 10.255.255.1:445 0.0.0.0:0 LISTENING
значит все в порядке и порт прослушивается на нужном адресе. Если же мы видим «0.0.0.0:445» — значит в нашей схеме что-то не сработало правильно. Проверить правила переадресации портов можно командой
netsh interface portproxy show v4tov4
Шаг 2. Ключ и рабочий скрипт
Создаем папку для вспомогательных файлов. Встроим, так сказать в систему наш способ.
mkdir %APPDATA%CIFSoverSSH
cd %APPDATA%CIFSoverSSH
Генерируем ключ для ssh-авторизации (назовем его, например: cifsoversshkey)
ssh-keygen -t rsa -N "" -f cifsoversshkey
В результате будет сгенерирована пара открытого и закрытого ключа. Для того, чтобы OpenSSH не выдавал сообщение UNPROTECTED PRIVATE KEY FILE! нужно изменить права на файл ключа. Задачу мы будем запускать для одного пользователя, от имени которого мы собираемся работать в Windows. Можно через GUI, но мне показалось что картинок уже достаточно. В Windows это сделаем следующей командой:
icacls cifsoversshkey /RESET
icacls cifsoversshkey /grant Имя_Пользователя:F /inheritance:r
В результате текущий пользователь будет назначен владельцем, отключено наследование и удалены унаследованные права. Проверить мы это сможем командой
icacls cifsoversshkey
Должны быть права только для текущего пользователя, иначе файл ключа не будет принят программой OpenSSH и соединение не будет подниматься!
Создадим в текущей папке пакетный файл cifsoverssh.cmd следующего содержания:
call cmd /c start "" /B C:WindowsSystem32OpenSSHssh.exe user@111.111.111.111 -p remoteport -i %APPDATA%CIFSoverSSHcifsoversshkey -L 10.255.255.1:44445:localhost:445 -N -o "StrictHostKeyChecking=no"
Где:
user@111.111.111.111 – пользователь на стороне linux сервера @ адрес удаленного сервера
Шаг 3. Ярлык или задача в планировщике
Создаем ярлык для следующей команды: powershell -nologo -noninteractive -windowStyle hidden -command «%APPDATA%CIFSoverSSHcifsoversshkey.cmd»
Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.
Для автоматизации запуска при входе в систему можно создать задачу в планировщике:
schtasks /CREATE /RU %username% /TN "CIFS over SSH" /TR "powershell.exe -nologo -noninteractive -windowStyle hidden -command %APPDATA%CIFSoverSSHcifsoversshkey.cmd" /SC ONLOGON /DELAY 0000:10 /IT /RL highest
На стороне клиентского компьютера Windows все приготовления были закончены.
Настройка Linux сервера
Предполагается, что ssh-сервер был предварительно настроен и включена авторизация по ключу.
Подключаемся по ssh из командной строки на windows-машине
C:WindowsSystem32OpenSSHssh.exe user@111.111.111.111 -p remoteport
В домашней папке пользователя, от имени которого мы будем авторизовываться при создании туннеля ищем файл ~/.ssh/authorized_keys (если файл отсутствует – создадим его).
mkdir ~/.ssh && touch ~/.ssh/authorized_keys
Теперь необходимо в этот файл вставить содержимое нашего файла публичного ключа, созданного на нашей windows-машине (файл %APPDATA%CIFSoverSSHcifsoversshkey.pub). Откроем его в любом редакторе и вставим цепочку ключа с новой строки. Если есть другие ключи, просто вставим его с новой строки.
Устанавливаем Samba (на примере Debian)
apt update && apt install samba
Переименовываем старый файл настроек и создаем новый файл
mv /etc/samba/smb.conf /etc/samba/smb.conf.old
touch /etc/samba/smb.conf
Открываем пустой файл настроек и приводим его к следующему виду:
[global]
realm = webserver
server string = Web server
workgroup = WORKGROUP
# Setup charsets
dos charset = cp1251
unix charset = utf8
# Disable printers
load printers = No
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
# Setup logging
log file = /var/log/smbd.log
max log size = 50
max xmit = 65536
debug level = 1
# Setup daemon settings
domain master = No
preferred master = Yes
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=65536 SO_RCVBUF=65536 SO_KEEPALIVE
os level = 65
use sendfile = Yes
dns proxy = No
dont descend = /proc,/dev,/etc
deadtime = 15
# Enable symlinks
unix extensions = No
wide links = yes
follow symlinks = yes
# Securtity settings
security = user
map to guest = Bad Password
guest account = nobody
create mask = 0664
directory mask = 0775
hide dot files = yes
client min protocol = SMB2
client max protocol = SMB3
[ShareName]
comment = Sites folder
path = /home/web
force user = www-data
force group = www-data
read only = No
guest ok = Yes
writable = yes
create mask = 0664
directory mask = 2775
В последней секции мы настраиваем непосредственно шару. В названии секции указываем имя шары ShareName. Path = путь к файлам, которые мы хотим расшарить. В параметрах force user и force group указываем linux-пользователя, от имени которого будут сохраняться файлы при изменении и создании в шаре. Так как у меня там лежат файлы для веб-сервера – у меня пользователь www-data
Перезапускаем Samba
systemctl restart smbd
Отключаемся и выходим в командную строку Windows
exit
Всё готово. Теперь остается только запустить наш ярлык или выйти из профиля пользователя windows и снова войти (если вы создали задачу в планировщике).
После этого ваша удаленная шара будет доступна по адресу \10.255.255.1ShareName — Можно даже монтировать её как сетевой диск.
CIFS-over-SSH
Sometimes there is a need to mount a remote Windows/Samba directory, but all you have is
an SSH connection to a remote server close to the fileserver.
This tutorial tries to explain how you can set up these Windows shares on Windows 10 & 11.
The concept behind mounting shares using SSH is this:
- The SSH protocol has a feature known as port-forwarding. This feature allows you to forward all
traffic from a TCP/IP network port on your local computer to another port on another computer at
the «other» side of the SSH connection. - The Windows File Sharing protocol, a.k.a.CIFS, uses TCP/IP port 445 to communicate between the
client and the server. Older versions of Windows also allowed the use of TCP/IP port 139 to
communicate between the client and the server. - Unfortunately, it turns out to be quite hard to redirect local port 445 to another computer, as
the OS also wants this port all for itself. However, with some special portproxy rules it is
still possible to grab port 445 before the OS does. - Thus, by configuring SSH in just the right way, we can redirect all traffic from the TCP/IP port 445
on your local computer to the remote Windows file server. - The result is that this will magically allow you to create a network share to view the remote directory
on your home computer.
This tutorial has been tested on Windows 2000, XP, Vista, 7, 8, 10 and 11.
Note This tutorial does not work on Windows Server 2016 or 2019. If someone finds a way to make
it work for Windows Server editions please let me know!
Types of access
For Windows 10+, the tutorial is now split into multiple parts, depending on the type of remote server
access that is required:
- Access to a single remote host, no Kerberos
- Access to multiple remote hosts, no Kerberos
- Access to multiple remote hosts, including DFS and Kerberos
Legacy tutorials
The following legacy tutorial pages are also available as single HTML pages:
- Windows 10 with the built-in OpenSSH client
- Windows 10 with the PuTTY SSH client
- Windows 8
- Windows 7
- Windows Vista
- Windows XP/2000
CIFS-over-SSH: Access to a single remote host, no Kerberos
(tested Win10 1809,1909,20H2,21H1,21H2,22H2 and Win11 22H2)
Introduction
This tutorial contains screenshots for the English version of Windows 10 and Windows 11.
Please note that in some screenshots references are made to ‘10.255.255.1’.
That is because these screenshots are shared with the Multi-host
version.
To be able to mount a Windows share on a single remote host over SSH we will need
- Administrator access to the local computer, including the ability to
elevate privileges. If you don’t know what I am talking about then
stop reading right here. - One real or virtual network adapter, bound to the Client for Microsoft Networks
driver.
Normally you should already have such an adapter, as otherwise you
would not be able to mount any Windows shares.
Note
With Windows 10 & 11, it is no longer required to add a Loopback
adapter to if you need
access a single remote host. That is the main difference between this tutorial
and the Multi-host version.
This part of the tutorial is split into the following steps:
-
Starting with Windows 10 update 1903, the Windows 10 feature «SMB 1.0» must be
turned off. -
Furthermore, a few Windows system services need to be
tweaked. -
Next, reboot Windows to verify that we’ve been able to
grab port 445 and to see if thelanmanserver
service is up and running. -
Finally, we launch a special OpenSSH session and
mount our remote share. -
For those wishing to undo the above steps follow the
instructions at the bottom of this page.
Disabling the ‘SMB 1.0’ Windows feature
NOTE: for a lot of users this does not seem to apply. I have left this step in the tutorial,
as it is good security practice anyways.
Starting with Windows 10 update 1903 we need to disable the Windows feature SMB 1.0
:
-
Go to the Control Panel->Programs->Programs and Features and select
Turn Windows features on or off -
A list of features pops up:
Scroll down and deselect the feature SMB 1.0/CIFS File Sharing support
-
Now close this control panel item.
(Thanks to Michael Uhlenberg for pointing this out)
Tweaking the ‘LanmanServer’ service
First, we need to tweak a Windows system service to overcome the thing that
Microsoft broke. The root cause of the problem is that we need to access the
file share using TCP port 445. However, when Windows boots, this port is
grabbed by the system lanmanserver
service for all interfaces.
If we can insert a portproxy
rule to grab port 445 for the loopback
interface before the lanmanserver
service starts, we can circumvent this.
Be aware that portproxy
rules are executed by the iphlpsvc
service.
By adding a dependency to the lanmanserver
service we ensure that the
iphlpsvc
service is always launched before the lanmanserver
service. This section explains how to do this:
- Start a console window with elevated (Administrator) privileges.
- Get the list of service dependencies by typing:
You should see output similar to this:
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: lanmanserver
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:WINDOWSsystem32svchost.exe -k netsvcs -p
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Server
DEPENDENCIES : SamSS
: Srv2
SERVICE_START_NAME : LocalSystem
Alternatively, you can use the Powershell
command
Get-Service -DisplayName server -RequiredServices
-
Note down the names of the services on which the
Server
service
(also known aslanmanserver
) depends. In this case, these services
aresamss
andsrv2
(the service names are case independent). -
Change the list of services on which the
lanmanserver
services depends
by adding theiphlpsvc
service to the list of required services found in the
previous step:
sc config lanmanserver depend= samss/srv2/iphlpsvc
NOTES:
-
The space after the
"depend= "
is required! -
Dependencies are separated using slashes («/»).
-
Next we add a
portproxy
rule to reroute TCP port 445 to a port of
our choosing. For this tutorial, I choose 44445:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445
connectaddress=127.0.0.1 connectport=44445
NOTE:
The connectaddress
must be identical to the listenaddress
If all went well you should see something like
The portproxy
rule is persistent, so there should be no need to repeat
this step after a reboot.
Reboot and verify
Of course, now that we have made modifications to the ‘Required Services’ dependency of the
‘LanmanServer’ service we have to reboot Windows before proceeding.
- Reboot Windows.
- Verify that the
portproxy
was applied successfully by checking the open ports
on the system. Type in a command console
netstat -an | find ":445"
You should see something like:
C:WINDOWSsystem32>netstat -an | find ":445"
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 127.0.0.1:445 0.0.0.0:0 LISTENING
TCP [::]:445 [::]:0 LISTENING
If you see only ‘0.0.0.0:445
‘ instead then the ‘portproxy’ rule was
not applied correctly. Verify that the right ‘portproxy’ rule was used
netsh interface portproxy show v4tov4
and verify that the IpHlpSvc
service is running at Windows startup using
Another reason for the ‘port grabbing’ to fail could be the LanmanWorkstation
service
running at Windows startup. If so, try giving it the same treatment as LanmanServer
.
However, on the Windows 10 & 11 installations I tested this service was running at system startup
without causing any problems.
- After Windows comes up and you have logged in, check the status of the ‘lanmanserver’ service. Open
a command console (no privilege elevation is required) and type
The ‘LanmanServer’ service should be in the state Running.
If it is not, then follow
these steps
to create a task using the Task Schedule to start it at system startup.
If the port is not grabbed correctly (i.e. no 127.0.0.1:445
in the netstat
output)
then try the
Old driver tweak
instructions to see if that works better for you.
Putting it all together
Now that we have configured both our loopback adapter we can put it all together by launching
a special OpenSSH connection and mounting the shares from the remote server fs1.example.org
as a Windows share:
- Launch an OpenSSH session with some special port-forwarding rules and login on
login.example.org
as normal. Open a Command console or terminal and type:
ssh -v -N -n -L 127.0.0.1:44445:fs.example.org:445
<Your-userid>@login.example.org
Yes, there are lots of colons in that -L
option but you need them all.
-
The first time you start the command with the special
port forwarding rules, you will be (probably) be prompted by the Windows
Defender Firewall that it has blocked some features:Allow access to at least Public networks by ticking the checkbox,
then click on Allow access as otherwise the port-forwarding will not work. -
Make sure port-forwarding is working properly by checking the (verbose) log:
Make sure the line
debug1: Local connections to 127.0.0.1:44445 forwarded to remote address fs.example.org:445
is present before continuing.
- Go to Start->Run and type
\127.0.0.1
- In the Console window you should now see a line
debug1: Connection to port 44445 forwarding to fs.example.org:445 requested.
as in the following screenshot:
If this is present then you can decrease the debug logging of the OpenSSH session
by removing the -v
option from the command line:
ssh -N -n -L 127.0.0.1:44445:fs.example.org:445 <Your-userid>@login.example.org
Note
If you carefully inspect the above screenshot then you will notice that I am using
the (built-in) OpenSSH Authentication Agent in combination with an SSH public/private keypair to
avoid having to type in my password every time.
-
You will be prompted to authenticate yourself:
For the Username, fill in the domain
DOMAIN
followed by your userid. -
You should now see your remote share in Windows Explorer!
Mapping a network drive
To make life even easier it might be handy to map a network drive to your remote share:
-
Start Windows Explorer and choose Tools->Map Network Drive.
-
In the next screen, fill in:
-
Choose an available drive letter.
-
Do NOT click on Browse but type in as the Folder name:
\127.0.0.1<directory>
-
Enable the checkbox in front of Connect using different credentials.
-
Now click on Finish.
-
In the next screen, fill in your Windows userid:
For the Username, fill in the domain
DOMAIN
followed by your userid. -
In the next screen, click on Finish to complete the network drive mapping.
-
You should now see a new drive letter appear in the Folders tree-list
in Windows Explorer. Click on it to verify that you are indeed viewing the remote
share.
Control+Z! Undo! Undo!
For those wishing to undo the CIFS-over-SSH trick follow these steps:
- Start a console window with elevated (Administrator) privileges.
- Restore the dependencies of the
lanmanserver
service by typing
sc config lanmanserver depend= samss/srv2
NOTES
- the list of required services may be slightly different on your system.
Use the PowerShell command from
this section
to obtain a list. - the space after the
depend=
! - Remove the
portproxy
rule by typing
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
- Remove the firewall rule to allow SSH to do portforwarding from 127.0.0.1:
-
Go to the Windows Control Panel
-
Select System and Security, then Windows Defender Firewall
-
Select Allowed apps, and scroll down in the list to
SSH Telnet and Rlogin client and deselect the permissionsThen press OK
-
- Start a
Device Manager
by typing
- Expand the ‘Network Adapters’, right-click on Loopback adapter and select
Uninstall. - If necessary, use the ‘Task Scheduler’ from the ‘Administrative Tasks’ menu to delete the
task ‘Start LanmanServer driver’.
CIFS-over-SSH: Access to a single remote host, no Kerberos
(tested Win10 1809,1909,20H2,21H1,21H2,22H2 and Win11 22H2)
Introduction
This tutorial contains screenshots for the English version of Windows 10 and Windows 11.
Please note that in some screenshots references are made to ‘10.255.255.1’.
That is because these screenshots are shared with the Multi-host
version.
To be able to mount a Windows share on a single remote host over SSH we will need
- Administrator access to the local computer, including the ability to
elevate privileges. If you don’t know what I am talking about then
stop reading right here. - One real or virtual network adapter, bound to the Client for Microsoft Networks
driver.
Normally you should already have such an adapter, as otherwise you
would not be able to mount any Windows shares.
Note
With Windows 10 & 11, it is no longer required to add a Loopback
adapter to if you need
access a single remote host. That is the main difference between this tutorial
and the Multi-host version.
This part of the tutorial is split into the following steps:
-
Starting with Windows 10 update 1903, the Windows 10 feature «SMB 1.0» must be
turned off. -
Furthermore, a few Windows system services need to be
tweaked. -
Next, reboot Windows to verify that we’ve been able to
grab port 445 and to see if thelanmanserver
service is up and running. -
Finally, we launch a special OpenSSH session and
mount our remote share. -
For those wishing to undo the above steps follow the
instructions at the bottom of this page.
Disabling the ‘SMB 1.0’ Windows feature
NOTE: for a lot of users this does not seem to apply. I have left this step in the tutorial,
as it is good security practice anyways.
Starting with Windows 10 update 1903 we need to disable the Windows feature SMB 1.0
:
-
Go to the Control Panel->Programs->Programs and Features and select
Turn Windows features on or off -
A list of features pops up:
Scroll down and deselect the feature SMB 1.0/CIFS File Sharing support
-
Now close this control panel item.
(Thanks to Michael Uhlenberg for pointing this out)
Tweaking the ‘LanmanServer’ service
First, we need to tweak a Windows system service to overcome the thing that
Microsoft broke. The root cause of the problem is that we need to access the
file share using TCP port 445. However, when Windows boots, this port is
grabbed by the system lanmanserver
service for all interfaces.
If we can insert a portproxy
rule to grab port 445 for the loopback
interface before the lanmanserver
service starts, we can circumvent this.
Be aware that portproxy
rules are executed by the iphlpsvc
service.
By adding a dependency to the lanmanserver
service we ensure that the
iphlpsvc
service is always launched before the lanmanserver
service. This section explains how to do this:
- Start a console window with elevated (Administrator) privileges.
- Get the list of service dependencies by typing:
You should see output similar to this:
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: lanmanserver
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:WINDOWSsystem32svchost.exe -k netsvcs -p
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Server
DEPENDENCIES : SamSS
: Srv2
SERVICE_START_NAME : LocalSystem
Alternatively, you can use the Powershell
command
Get-Service -DisplayName server -RequiredServices
-
Note down the names of the services on which the
Server
service
(also known aslanmanserver
) depends. In this case, these services
aresamss
andsrv2
(the service names are case independent). -
Change the list of services on which the
lanmanserver
services depends
by adding theiphlpsvc
service to the list of required services found in the
previous step:
sc config lanmanserver depend= samss/srv2/iphlpsvc
NOTES:
-
The space after the
"depend= "
is required! -
Dependencies are separated using slashes («/»).
-
Next we add a
portproxy
rule to reroute TCP port 445 to a port of
our choosing. For this tutorial, I choose 44445:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445
connectaddress=127.0.0.1 connectport=44445
NOTE:
The connectaddress
must be identical to the listenaddress
If all went well you should see something like
The portproxy
rule is persistent, so there should be no need to repeat
this step after a reboot.
Reboot and verify
Of course, now that we have made modifications to the ‘Required Services’ dependency of the
‘LanmanServer’ service we have to reboot Windows before proceeding.
- Reboot Windows.
- Verify that the
portproxy
was applied successfully by checking the open ports
on the system. Type in a command console
netstat -an | find ":445"
You should see something like:
C:WINDOWSsystem32>netstat -an | find ":445"
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 127.0.0.1:445 0.0.0.0:0 LISTENING
TCP [::]:445 [::]:0 LISTENING
If you see only ‘0.0.0.0:445
‘ instead then the ‘portproxy’ rule was
not applied correctly. Verify that the right ‘portproxy’ rule was used
netsh interface portproxy show v4tov4
and verify that the IpHlpSvc
service is running at Windows startup using
Another reason for the ‘port grabbing’ to fail could be the LanmanWorkstation
service
running at Windows startup. If so, try giving it the same treatment as LanmanServer
.
However, on the Windows 10 & 11 installations I tested this service was running at system startup
without causing any problems.
- After Windows comes up and you have logged in, check the status of the ‘lanmanserver’ service. Open
a command console (no privilege elevation is required) and type
The ‘LanmanServer’ service should be in the state Running.
If it is not, then follow
these steps
to create a task using the Task Schedule to start it at system startup.
If the port is not grabbed correctly (i.e. no 127.0.0.1:445
in the netstat
output)
then try the
Old driver tweak
instructions to see if that works better for you.
Putting it all together
Now that we have configured both our loopback adapter we can put it all together by launching
a special OpenSSH connection and mounting the shares from the remote server fs1.example.org
as a Windows share:
- Launch an OpenSSH session with some special port-forwarding rules and login on
login.example.org
as normal. Open a Command console or terminal and type:
ssh -v -N -n -L 127.0.0.1:44445:fs.example.org:445
<Your-userid>@login.example.org
Yes, there are lots of colons in that -L
option but you need them all.
-
The first time you start the command with the special
port forwarding rules, you will be (probably) be prompted by the Windows
Defender Firewall that it has blocked some features:Allow access to at least Public networks by ticking the checkbox,
then click on Allow access as otherwise the port-forwarding will not work. -
Make sure port-forwarding is working properly by checking the (verbose) log:
Make sure the line
debug1: Local connections to 127.0.0.1:44445 forwarded to remote address fs.example.org:445
is present before continuing.
- Go to Start->Run and type
\127.0.0.1
- In the Console window you should now see a line
debug1: Connection to port 44445 forwarding to fs.example.org:445 requested.
as in the following screenshot:
If this is present then you can decrease the debug logging of the OpenSSH session
by removing the -v
option from the command line:
ssh -N -n -L 127.0.0.1:44445:fs.example.org:445 <Your-userid>@login.example.org
Note
If you carefully inspect the above screenshot then you will notice that I am using
the (built-in) OpenSSH Authentication Agent in combination with an SSH public/private keypair to
avoid having to type in my password every time.
-
You will be prompted to authenticate yourself:
For the Username, fill in the domain
DOMAIN
followed by your userid. -
You should now see your remote share in Windows Explorer!
Mapping a network drive
To make life even easier it might be handy to map a network drive to your remote share:
-
Start Windows Explorer and choose Tools->Map Network Drive.
-
In the next screen, fill in:
-
Choose an available drive letter.
-
Do NOT click on Browse but type in as the Folder name:
\127.0.0.1<directory>
-
Enable the checkbox in front of Connect using different credentials.
-
Now click on Finish.
-
In the next screen, fill in your Windows userid:
For the Username, fill in the domain
DOMAIN
followed by your userid. -
In the next screen, click on Finish to complete the network drive mapping.
-
You should now see a new drive letter appear in the Folders tree-list
in Windows Explorer. Click on it to verify that you are indeed viewing the remote
share.
Control+Z! Undo! Undo!
For those wishing to undo the CIFS-over-SSH trick follow these steps:
- Start a console window with elevated (Administrator) privileges.
- Restore the dependencies of the
lanmanserver
service by typing
sc config lanmanserver depend= samss/srv2
NOTES
- the list of required services may be slightly different on your system.
Use the PowerShell command from
this section
to obtain a list. - the space after the
depend=
! - Remove the
portproxy
rule by typing
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
- Remove the firewall rule to allow SSH to do portforwarding from 127.0.0.1:
-
Go to the Windows Control Panel
-
Select System and Security, then Windows Defender Firewall
-
Select Allowed apps, and scroll down in the list to
SSH Telnet and Rlogin client and deselect the permissionsThen press OK
-
- Start a
Device Manager
by typing
- Expand the ‘Network Adapters’, right-click on Loopback adapter and select
Uninstall. - If necessary, use the ‘Task Scheduler’ from the ‘Administrative Tasks’ menu to delete the
task ‘Start LanmanServer driver’.
Bat. ssh. передача команд на выполнение
Всем доброго времени суток!
Есть bat-ник для подключения к удаленному хосту через ssh:
start "" "C:blablaputty.exe" login@host -pw password
Он благополучно выполняется и каждый раз я нахожусь в домашней директории. И каждый раз делаю cd bla/bla/bla
в ту или иную директорию.
Вопрос: можно ли в bat-нике указать перечень команд, которые должны быть выполнены после подлючения к хосту?
Sshd_config
Аналогично операционным системам семейства Linux, OpenSSH Server в Windows имеет в своем составе особый файл, где хранятся все параметры для выполнения более подробных настроек. Например, для ограничения входа.
Протокол SSH, помимо работы в интерактивном режиме, поддерживает также разовый запуск команд или скриптов на удаленном сервере.
Запуск службы openssh
После установки функции SSH-сервера нам остается только его запустить:
Start-Service sshd
Опционально можно установить для службы sshd автоматический запуск:
Set-Service -Name sshd -StartupType 'Automatic'
Команды ssh
SSH (Secure Shell) – сетевой протокол для защищенного удаленного управления операционной системой.
Для подключения к удаленному серверу по SSH требуется SSH клиент, например Putty (под Windows). Скачать Putty
Ниже список команд:
Системная информация:
arch или uname -m — отобразить архитектуру компьютера
uname -r — отобразить используемую версию ядра
dmidecode -q — показать аппаратные системные компоненты — (SMBIOS / DMI)
hdparm -i /dev/hda — вывести характеристики жёсткого диска
hdparm -tT /dev/sda — протестировать производительность чтения данных с жёсткого диска
cat /proc/cpuinfo — отобразить информацию о процессоре
cat /proc/interrupts — показать прерывания
cat /proc/meminfo — проверить использование памяти
cat /proc/swaps — показать файл(ы) подкачки
cat /proc/version — вывести версию ядра
cat /proc/net/dev — показать сетевые интерфейсы и статистику по ним
cat /proc/mounts — отобразить смонтированные файловые системы
lspci -tv — показать в виде дерева PCI устройства
lsusb -tv — показать в виде дерева USB устройства
date — вывести системную дату
cal 2007 — вывести таблицу-календарь 2007-го года
date 041217002007.00* — установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w — сохранить системное время в BIOS
Остановка системы:
shutdown -h now или init 0 или telinit 0 — остановить систему
shutdown -h hours:minutes & — запланировать остановку системы на указанное время
shutdown -c — отменить запланированную по расписанию остановку системы
shutdown -r now или reboot — перегрузить систему
logout — выйти из системы
Файлы и директории:
cd /home — перейти в директорию ‘/home’
cd .. — перейти в директорию уровнем выше
cd ../.. — перейти в директорию двумя уровнями выше
cd — перейти в домашнюю директорию
cd ~user — перейти в домашнюю директорию пользователя user
cd – — перейти в директорию, в которой находились до перехода в текущую директорию
pwd — показать текущую директорию
ls — отобразить содержимое текущей директории
ls -F — отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип
ls -l — показать детализированное представление файлов и директорий в текущей директории
ls -a — показать скрытые файлы и директории в текущей директории
ls *[0-9]* — показать файлы и директории содержащие в имени цифры
tree или lstree — показать дерево файлов и директорий, начиная от корня (/)
mkdir dir1 — создать директорию с именем ‘dir1’
mkdir dir1 dir2 — создать две директории одновременно
mkdir -p /tmp/dir1/dir2 — создать дерево директорий
rm -f file1 — удалить файл с именем ‘file1’
rmdir dir1 — удалить директорию с именем ‘dir1’
rm -rf dir1 — удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое
rm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимое
mv dir1 new_dir — переименовать или переместить файл или директорию
cp file1 file2 — скопировать файл file1 в файл file2
cp dir/* . — копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 — копировать директорию dir1 в директорию dir2
ln -s file1 lnk1* — создать символическую ссылку на файл или директорию
ln file1 lnk1 — создать «жёсткую» (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest — модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)
Поиск файлов:
find / -name file1 — найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 — найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name “*.bin” — найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’*
find /usr/bin -type f -atime 100 — найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней
find /usr/bin -type f -mtime -10 — найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 ‘{}’ ; — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним
find / -xdev -name “*.rpm” — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.
locate “*.ps” — найти все файлы, содержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’
whereis halt — показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’
which halt — отображает полный путь к файлу ‘halt’
Монтирование файловых систем:
mount /dev/hda2 /mnt/hda2 — монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’
umount /dev/hda2 — размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’
fuser -km /mnt/hda2 — принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/hda2 — выполнить размонтирование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске
mount /dev/fd0 /mnt/floppy — монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom — монтировать CD или DVD
mount /dev/hdc /mnt/cdrecorder — монтировать CD-R/CD-RW или DVD-R/DVD-RW( -)
mount -o loop file.iso /mnt/cdrom — смонтировать ISO-образ
mount -t vfat /dev/hda5 /mnt/hda5 — монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/prg /var/ftp/user — «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user
Дисковое пространство:
df -h — отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим. переводчика. ключ -h работает не во всех *nix системах)
ls -lSr |more — выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1 — подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим. переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rn — отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a –qf ‘{SIZE}t%{NAME}n’ | sort -k1,1n — показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n — показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)
Пользователи и группы:
groupadd group_name — создать новую группу с именем group_name
groupdel group_name — удалить группу group_name
groupmod -n new_group_name old_group_name — переименовать группу old_group_name в new_group_name
useradd -c “Nome Cognome” -g admin -d /home/user1 -s /bin/bash user1 — создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
useradd user1 — создать пользователя user1
userdel -r user1 — удалить пользователя user1 и его домашний каталог
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 — изменить атрибуты пользователя
passwd — сменить пароль
passwd user1 — сменить пароль пользователя user1 (только root)
chage -E 2005-12-31 user1 — установить дату окончания действия учётной записи пользователя user1
pwck — проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck — проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] group_name — изменяет первичную группу текущего пользователя. Если указать «-», ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd
Выставление/изменение полномочий на файлы:
ls -lh — просмотр полномочий на файлы и директории в текущей директории
ls /tmp | pr -T5 -W$COLUMNS — вывести содержимое директории /tmp и разделить вывод на пять колонок
chmod ugo rwx directory1 — добавить полномочия на директорию directory1 ugo(User Group Other) rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом chmod 777 directory1
chmod go-rwx directory1 — отобрать у группы и всех остальных все полномочия на директорию directory1.
chown user1 file1 — назначить владельцем файла file1 пользователя user1
chown -R user1 directory1 — назначить рекурсивно владельцем директории directory1 пользователя user1
chgrp group1 file1 — сменить группу-владельца файла file1 на group1
chown user1:group1 file1 — сменить владельца и группу владельца файла file1
find / -perm -u s — найти, начиная от корня, все файлы с выставленным SUID
chmod u s /bin/binary_file — назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.
chmod u-s /bin/binary_file — снять SUID-бит с файла /bin/binary_file.
chmod g s /home/public — назначить SGID-бит директории /home/public.
chmod g-s /home/public — снять SGID-бит с директории /home/public.
chmod o t /home/public — назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам
chmod o-t /home/public — снять STIKY-бит с директории /home/public
Специальные атрибуты файлов:
chattr a file1 — позволить открывать файл на запись только в режиме добавления
chattr c file1 — позволяет ядру автоматически сжимать/разжимать содержимое файла.
chattr d file1 — указывает утилите dump игнорировать данный файл во время выполнения backup’а
chattr i file1 — делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.
chattr s file1 — позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращает возможность восстановления данных.
chattr S file1 — указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync
chattr u file1 — данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить
lsattr — показать атрибуты файлов
Архивирование и сжатие файлов:
bunzip2 file1.bz2 — разжимает файл ‘file1.gz’
gunzip file1.gz —
gzip file1 или bzip2 file1 — сжимает файл ‘file1’
gzip -9 file1 — сжать файл file1 с максимальным сжатием
rar a file1.rar test_file — создать rar-архив ‘file1.rar’ и включить в него файл test_file
rar a file1.rar file1 file2 dir1 — создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1
rar x file1.rar — распаковать rar-архив
unrar x file1.rar —
tar -cvf archive.tar file1 — создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1 — создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar — показать содержимое архива
tar -xvf archive.tar — распаковать архив
tar -xvf archive.tar -C /tmp — распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1 — создать архив и сжать его с помощью bzip2(Прим. переводчика. ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2 — разжать архив и распаковать его(Прим. переводчика. ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1 — создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz — разжать архив и распаковать его
zip file1.zip file1 — создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1 — создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip — разжать и распаковать zip-архив
RPM пакеты (Fedora, Red Hat и тому подобное):
rpm -ivh package.rpm — установить пакет с выводом сообщений и прогресс-бара
rpm -ivh –nodeps package.rpm — установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей
rpm -U package.rpm — обновить пакет без изменений конфигурационных файлов, в случае отсутствия пакета, он будет установлен
rpm -F package.rpm — обновить пакет только если он установлен
rpm -e package_name.rpm — удалить пакет
rpm -qa — отобразить список всех пакетов, установленных в системе
rpm -qa | grep httpd — среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
rpm -qi package_name — вывести информацию о конкретном пакете
rpm -qg “System Environment/Daemons” — отобразить пакеты входящие в группу пакетов
rpm -ql package_name — вывести список файлов, входящих в пакет
rpm -qc package_name — вывести список конфигурационных файлов, входящих в пакет
rpm -q package_name –whatrequires — вывести список пакетов, необходимых для установки конкретного пакета по зависимостям
rpm -q package_name –whatprovides — show capability provided by a rpm package
rpm -q package_name –scripts — отобразит скрипты, запускаемые при установке/удалении пакета
rpm -q package_name –changelog — вывести историю ревизий пакета
rpm -qf /etc/httpd/conf/httpd.conf — проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла.
rpm -qp package.rpm -l — отображает список файлов, входящих в пакет, но ещё не установленных в систему
rpm –import /media/cdrom/RPM-GPG-KEY — импортировать публичный ключ цифровой подписи
rpm –checksig package.rpm — проверит подпись пакета
rpm -qa gpg-pubkey — проверить целостность установленного содержимого пакета
rpm -V package_name — проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета
rpm -Va — проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!
rpm -Vp package.rpm — проверить пакет, который ещё не установлен в систему
rpm2cpio package.rpm | cpio –extract –make-directories *bin* — извлечь из пакета файлы содержащие в своём имени bin
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm — установить пакет, собранный из исходных кодов
rpmbuild –rebuild package_name.src.rpm — собрать пакет из исходных кодов
YUM — средство обновления пакетов(Fedora, RedHat и тому подобное):
yum install package_name — закачать и установить пакет
yum update — обновить все пакеты, установленные в систему
yum update package_name — обновить пакет
yum remove package_name — удалить пакет
yum list — вывести список всех пакетов, установленных в систему
yum search package_name — найти пакет в репозиториях
yum clean packages — очисть rpm-кэш, удалив закачанные пакеты
yum clean headers — удалить все заголовки файлов, которые система использует для разрешения зависимостей
yum clean all — очисть rpm-кэш, удалив закачанные пакеты и заголовки
DEB пакеты (Debian, Ubuntu и тому подобное):
dpkg -i package.deb — установить / обновить пакет
dpkg -r package_name — удалить пакет из системы
dpkg -l — показать все пакеты, установленные в систему
dpkg -l | grep httpd — среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
dpkg -s package_name — отобразить информацию о конкретном пакете
dpkg -L package_name — вывести список файлов, входящих в пакет, установленный в систему
dpkg –contents package.deb — отобразить список файлов, входящих в пакет, который ещё не установлен в систему
dpkg -S /bin/ping — найти пакет, в который входит указанный файл.
APT — средство управление пакетами (Debian, Ubuntu и тому подобное):
apt-get update — получить обновлённые списки пакетов
apt-get upgrade — обновить пакеты, установленные в систему
apt-get install package_name — установить / обновить пакет
apt-cdrom install package_name — установить / обновить пакет с cdrom’а
apt-get remove package_name — удалить пакет, установленный в систему с сохранением файлов конфигурации
apt-get purge package_name — удалить пакет, установленный в систему с удалением файлов конфигурации
apt-get check — проверить целостность зависимостей
apt-get clean — удалить загруженные архивные файлы пакетов
apt-get autoclean — удалить старые загруженные архивные файлы пакетов
Pacman — средство управление пакетами (Arch, Frugalware и alike)
pacman -S name — install package «name» with dependencies
pacman -R name — delete package «name» and all files of it
Просмотр содержимого файлов:
cat file1 — вывести содержимое файла file1 на стандартное устройство вывода
tac file1 — вывести содержимое файла file1 на стандартное устройство вывода в обратном порядке (последняя строка становиться первой и т.д.)
more file1 — постраничный вывод содержимого файла file1 на стандартное устройство вывода
less file1 — постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -2 file1 — вывести первые две строки файла file1 на стандартное устройство вывода. По умолчанию выводится десять строк
tail -2 file1 — вывести последние две строки файла file1 на стандартное устройство вывода. По умолчанию выводится десять строк
tail -f /var/log/messages — выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.
Манипуляции с текстом:
grep -HR OLDTEXT ./ | awk ‘{print $1}’ | sed ‘s/:.*$//’ | grep -v ‘~’ | sort | uniq | xargs perl -i -pe “s/OLD_TEXT/NEW_TEXT/g;” — Поиск и замена текста OLDTEXT на NEW_TEXT во многих файлах одновременно с рекурсивным обходом директорий.
cat file_originale | [operation: sed, grep, awk, grep ит.п.] > result.txt — общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
cat file_originale | [operazione: sed, grep, awk, grepит.п.] >> result.txt — общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages — из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»
grep ^Aug /var/log/messages — из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»
grep [0-9] /var/log/messages — из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/* — отобрать и вывести на стандартное устройство вывода строки, содержащие «Augr», во всех файлах, находящихся в директории /var/log и ниже
sed ‘s/stringa1/stringa2/g’ example.txt — в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода.
sed ‘/^$/d’ example.txt — удалить пустые строки из файла example.txt
sed ‘/ *#/d; /^$/d’ example.txt — удалить пустые строки и комментарии из файла example.txt
echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ — преобразовать символы из нижнего регистра в верхний
sed -e ‘1d’ result.txt — удалить первую строку из файла example.txt
sed -n ‘/string1/p’ — отобразить только строки, содержащие «string1»
sed -e ‘s/ *$//’ example.txt — удалить пустые символы в конце каждой строки
sed -e ‘s/string1//g’ example.txt — удалить строку «string1» из текста не изменяя всего остального
sed -n ‘1,8p;5q’ example.txt — взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n ‘5p;5q’ example.txt — вывести пятую строку
sed -e ‘s/0*/0/g’ example.txt — заменить последовательность из любого количества нулей одним нулём
cat -n file1 — пронумеровать строки при выводе содержимого файла
cat example.txt | awk ‘NR%2==1’ — при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk ‘{print $1}’ — вывести первую колонку. Разделение, по умолчанию, по пробелу/пробелам или символу/символам табуляции
echo a b c | awk ‘{print $1,$3}’ — вывести первую и третью колонки. Разделение, по умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2 — объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n 1-m
paste -d ‘ ‘ file1 file2 — объединить содержимое file1 и file2 в виде таблицы с разделителем « »
sort file1 file2 — отсортировать содержимое двух файлов
sort file1 file2 | uniq — отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u — отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d — отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2 — сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’
comm -2 file1 file2 — сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’
comm -3 file1 file2 — сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
Преобразование наборов символов и файловых форматов:
dos2unix filedos.txt fileunix.txt — конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата каретки)
unix2dos fileunix.txt filedos.txt — конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата каретки)
recode ..HTML < page.txt > page.html — конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more — вывести список доступных форматов
Анализ файловых систем:
badblocks -v /dev/hda1 — проверить раздел hda1 на наличие bad-блоков
fsck /dev/hda1 — проверить/восстановить целостность linux-файловой системы раздела hda1
fsck.ext2 /dev/hda1 или e2fsck /dev/hda1 — проверить/восстановить целостность файловой системы ext2 раздела hda1
e2fsck -j /dev/hda1 — проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же
fsck.ext3 /dev/hda1 — проверить/восстановить целостность файловой системы ext3 раздела hda1
fsck.vfat /dev/hda1 или fsck.msdos /dev/hda1 или dosfsck /dev/hda1 — проверить/восстановить целостность файловой системы fat раздела hda11
Форматирование файловых систем:
mkfs /dev/hda1 — создать linux-файловую систему на разделе hda1
mke2fs /dev/hda1 — создать файловую систему ext2 на разделе hda1
mke2fs -j /dev/hda1 — создать журналирующую файловую систему ext3 на разделе hda1
mkfs -t vfat 32 -F /dev/hda1 — создать файловую систему FAT32 на разделе hda1
fdformat -n /dev/fd0 — форматирование флоппи-диска без проверки
mkswap /dev/hda3 — создание swap-пространства на разделе hda3
swap-пространство:
mkswap /dev/hda3 — создание swap-пространства на разделе hda3
swapon /dev/hda3 — активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3 — активировать swap-пространства, расположенные на разделах hda2 и hdb3
Создание резервных копий (backup):
dump -0aj -f /tmp/home0.bak /home — создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home — создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
restore -if /tmp/home0.bak — восстановить из резервной копии /tmp/home0.bak
rsync -rogpav –delete /home /tmp — синхронизировать /tmp с /home
rsync -rogpav -e ssh –delete /home ip_address:/tmp — синхронизировать через SSH-туннель
rsync -az -e ssh –delete ip_addr:/home/public /home/local — синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием
rsync -az -e ssh –delete /home/local ip_addr:/home/public — синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ — сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель
tar -Puf backup.tar /home/user — создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ — копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ — копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home
tar cf – . | (cd /tmp/backup ; tar xf – ) — копирование одной директории в другую с сохранением полномочий и линков
find /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parents — поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию
find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2 — поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 — создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 — восстановить MBR с флоппи-диска на /dev/hda
CDROM:
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force — clean a rewritable cdrom
mkisofs /dev/cdrom > cd.iso — create an iso image of cdrom on disk
mkisofs /dev/cdrom | gzip > cd_iso.gz — create a compressed iso image of cdrom on disk
mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd — create an iso image of a directory
cdrecord -v dev=/dev/cdrom cd.iso — burn an ISO image
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom — burn a compressed ISO image
mount -o loop cd.iso /mnt/iso — mount an ISO image
cd-paranoia -B — rip audio tracks from a CD to wav files
cd-paranoia — “-3” — rip first three audio tracks from a CD to wav files
cdrecord –scanbus — scan bus to identify the channel scsi
Сеть (LAN и WiFi):
ifconfig eth0 — показать конфигурацию сетевого интерфейса eth0
ifup eth0 — активировать (поднять) интерфейс eth0
ifdown eth0 — деактивировать (опустить) интерфейс eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 — выставить интерфейсу eth0 IP-адрес и маску подсети
ifconfig eth0 promisc — перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)
ifconfig eth0 -promisc — отключить promiscuous-режим на интерфейсе eth0
dhclient eth0 — активировать интерфейс eth0 в dhcp-режиме.
route -n
netstat -rn — вывести локальную таблицу маршрутизации
route add -net 0/0 gw IP_Gateway — задать IP-адрес шлюза по умолчанию (default gateway)
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 — добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с IP-адресом 192.168.1.1
route del 0/0 gw IP_gateway — удалить IP-адрес шлюза по умолчанию (default gateway)
echo “1” > /proc/sys/net/ipv4/ip_forward — разрешить пересылку пакетов (forwarding)
hostname — отобразить имя компьютера
host www.example.com или host 192.0.43.10 — разрешить имя www.example.com хоста в IP-адрес и наоборот
ip link show — отобразить состояние всех интерфейсов
mii-tool eth0 — отобразить статус и тип соединения для интерфейса eth0
ethtool eth0 — отображает статистику интерфейса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения
netstat -tupn — отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в IP-адреса и PID’ы и имена процессов, обеспечивающих эти соединения
netstat -tupln — отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в IP-адреса и PID’ы и имена процессов, слушающих порты
tcpdump tcp port 80 — отобразить весь трафик на TCP-порт 80 (обычно — HTTP)
iwlist scan — просканировать эфир на предмет, доступности беспроводных точек доступа
iwconfig eth1 — показать конфигурацию беспроводного сетевого интерфейса eth1
Microsoft Windows networks(SAMBA):
nbtscan ip_addr
nmblookup -A ip_addr — разрешить netbios-имя nbtscan не во всех системах ставится по умолчанию, возможно, придётся доустанавливать вручную. nmblookup включён в пакет samba.
smbclient -L ip_addr/hostname — отобразить ресурсы, предоставленные в общий доступ на windows-машине
smbget -Rr smb://ip_addr/share — подобно wget может получить файлы с windows-машин через smb-протокол
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему
IPTABLES (firewall):
iptables -t filter -nL
iptables -nL — отобразить все цепочки правил
iptables -t nat -L — отобразить все цепочки правил в NAT-таблице
iptables -t filter -F или iptables -F — очистить все цепочки правил в filter-таблице
iptables -t nat -F — очистить все цепочки правил в NAT-таблице
iptables -t filter -X — удалить все пользовательские цепочки правил в filter-таблице
iptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPT — позволить входящее подключение telnet’ом
iptables -t filter -A OUTPUT -p tcp –dport http -j DROP — блокировать исходящие HTTP-соединения
iptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPT — позволить «прокидывать» (forward) POP3-соединения
iptables -t filter -A INPUT -j LOG –log-prefix “DROP INPUT” — включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE — включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми IP-адресами.
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22 — перенаправление пакетов, адресованных одному хосту, на другой хост
Мониторинг и отладка:
top — отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)
ps -eafw — отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)
ps -e -o pid,args –forest — вывести PID’ы и процессы в виде дерева
pstree — отобразить дерево процессов
kill -9 98989 или kill -KILL 98989 — «убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)
kill -TERM 98989 — корректно завершить процесс с PID 98989
kill -1 98989 или kill -HUP 98989 — заставить процесс с PID 98989 перепрочитать файл конфигурации
lsof -p 98989 — отобразить список файлов, открытых процессом с PID 98989
lsof /home/user1 — отобразить список открытых файлов из директории /home/user1
strace -c ls >/dev/null — вывести список системных вызовов, созданных и полученных процессом ls
strace -f -e open ls >/dev/null — вывести вызовы библиотек
watch -n1 ‘cat /proc/interrupts’ — отображать прерывания в режиме реального времени
last reboot — отобразить историю перезагрузок системы
last user1 — отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней
lsmod — вывести загруженные модули ядра
free -m — показать состояние оперативной памяти в мегабайтах
smartctl -A /dev/hda — контроль состояния жёсткого диска /dev/hda через SMART
smartctl -i /dev/hda — проверить доступность SMART на жёстком диске /dev/hda
tail /var/log/dmesg — вывести десять последних записей из журнала загрузки ядра
tail /var/log/messages — вывести десять последних записей из системного журнала
Другие полезные команды:
apropos …keyword — выводит список команд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду
man ping — вызов руководства по работе с программой, в данном случае, — ping
whatis …keyword — отображает описание действий указанной программы
mkbootdisk –device /dev/fd0 `uname -r` — создаёт загрузочный флоппи-диск
gpg -c file1 — шифрует файл file1 с помощью GNU Privacy Guard
gpg file1.gpg — дешифрует файл file1 с помощью GNU Privacy Guard
wget -r http://www.example.com — загружает рекурсивно содержимое сайта http://www.example.com
wget -c http://www.example.com/file.iso — загрузить файл http://www.example.com/file.iso с возможностью останова и продолжения в последствии
echo ‘wget -c http://www.example.com/files.iso’ | at 09:00 — начать закачку в указанное время
ldd /usr/bin/ssh — вывести список библиотек, необходимых для работы ssh
alias hh=’history’ — назначить алиас hh команде history
Копирование файлов
Также, как с сервером OpenSSH в любой системе * nix, вы можете использовать SCP для копирования файлов на сервер или с сервера.Например, администратор Linux может быстро получить файл журнала с сервера Windows с помощью той же команды, что и для сервера Linux.
На стороне windows
Должен быть установлены OpenSSH. В Windows 10 и Windows Server 2021 появился встроенный SSH клиент на основе OpenSSH. Им мы и воспользуемся. Сначала убедимся что он установлен – наберем в командной строке
ssh
Если видим исполнение команды — все “Ок”, клиент присутствует в системе.
Настройка linux сервера
Предполагается, что ssh-сервер был предварительно настроен и включена авторизация по ключу.
Подключаемся по ssh из командной строки на windows-машине
Настройка сетевого адаптера для dns-сервера
Установка DNS-сервера предполагает наличие доменной зоны, поэтому необходимо создать частную сеть в личном кабинете и подключить к ней виртуальные машины.
После того, как машина будет присоединена к двум сетям, важно не перепутать, какое из подключений требует настройки. Первичный сетевой адаптер настроен автоматически с самого начала, через него открыт доступ к интернету, в то время как на дополнительно подключенных сетевых адаптерах доступа в интернет нет, пока не будет произведена ручная настройка:
Наведя курсор на значок сети в системном трее, можно вызвать всплывающую подсказку с краткими сведениями о сетях. Из примера выше видно, что присоединённая сеть это Network 3.
Далее предстоит проделать цепочку действий:
- Нажать правой клавишей мыши Пуск, в выпадающем меню выбрать пункт Сетевые подключения;
- Правой кнопкой мыши нажать на необходимый сетевой адаптер, в меню выбрать Свойства;
- В окне свойств выбрать IPv4 и нажать на кнопку Свойства;
- Заполнить соответствующие поля необходимыми данными:
Здесь в качестве предпочитаемого DNS-сервера машина назначена сама себе, альтернативным назначен dns.google [8.8.8.8].
Первичная конфигурация ssh-сервера
По умолчанию при подключении к OpenSSH-серверу используется командная строка Windows. Вы можете использовать практически любую оболочку на вашем компьютере с Windows через SSH-соединение. Даже возможно использовать Bash, когда подсистема Windows для Linux (WSL) также установлена на целевой машине. Также возможно изменение оболочки по умолчанию на SSH-сервере на нечто иное, чем командная оболочка. Для этого ключ реестра «DefaultShell» необходимо изменить.
Сделать это можно как через редактор реестра regedit.exe, открыв в нем следующий путь: HKEY_LOCAL_MACHINESOFTWAREOpenSSH и изменив в нем параметр DefaultShell, указав в нем полный путь до исполняемого файла необходимой командной строки, например:
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
Тоже самое можно сделать используя PowerShell:
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force
Проверим настройки Windows Firewall, используя для этого PowerShell:
Get-NetFirewallRule -Name *ssh*
Введя данную команду мы получим параметры правила, разрешающего SSH-подключение к серверу. Если правила не оказалось, введем следующую команду, создав его:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Подключение к серверу
Теперь мы готовы к работе и можем подключиться через установленное приложение к нашему хосту. Это можно осуществить либо с Windows 10, компьютера с Linux, с putty.exe на более старой машине с Windows, либо с Bash в настольной операционной системе от Microsoft. Все, что вам нужно, это найти какой-либо SSH-клиент, ввести в него имя пользователя, имя вашего сервера или IP-адрес и подключиться.
При первом подключении с неизвестного хоста будет показано следующее сообщение:
Ответив на него yes, хост подключения будет добавлен в список известных хостов сервера. После чего необходимо ввести пароль пользователя (по соображениям безопасности вводимые символы отображаться не будут). После успешного подключения отобразится интерфейс используемой командной строки:
Проверка
- Проверьте изменения в каталогах обеих зон (на примере ниже в обеих зонах появилось по 2 новых записи):
- Откройте командную строку (cmd) или PowerShell и запустите команду nslookup:
Процесс настройки
Запускаем «Диспетчер серверов». Находим пункт DHCP в открывающемся списке «Tools»:
В нашем варианте мы рассматриваем выдачу IPv4 адресов, поэтому нужно создать новую область (Scope) — пул IP-адресов, выдаваемых клиентам. Нажимаем правой кнопкой мыши на IPv4 и выбираем «New Scope…»:
Открывается Мастер создания области, где мы вводим имя пула. Если необходимо, то можно ввести описание:
Определяем границы нашего пула, задав начальный и конечный IP-адрес. Также вводим маску подсети:
В случае необходимости можно добавить в исключения один или несколько IP-адресов из создаваемого пула. В этом диапазоне могут находиться сетевые устройства которым уже назначен статический IP. Тут же есть параметр задержки ответа сервера перед отправкой данных на запрос от хоста:
Далее можно указать время аренды IP-адреса. По умолчанию выставлено 8 дней:
Теперь Мастер предложит указать сетевые параметры (Gateway, DNS, WINS), выдаваемые клиентам в сети:
Укажем адрес сетевого шлюза:
Следующий этап позволяет добавить WINS-сервер:
Выбираем «Активировать» заданную нами область сейчас:
После настройки пула можно проверить работает ли сервер. Посмотреть подключенных клиентов можно перейдя в раздел «Address Leases». В нашем случае видим, что подключено одно устройство:
Если мы зайдем на клиентскую машину, то можем проверить правильность полученных настроек:
Хоть мы и рассматривали настройку на Windows Server 2021, данная инструкция так же подойдет и для Windows Server 2008—2021, так как процесс не сильно отличается.
Процесс установки
- Запустим Диспетчер серверов и выберем «Add roles and features». Выберем первый пункт «Role — based or feature — based installation»:
- Укажем сервер, на который будем устанавливать роль DHCP:
- Мастер напомнит вам о то, что нужно заранее спланировать подсети, области и исключения:
- Проверяем устанавливаемые компоненты и нажимаем «Install»:
- После завершения установки можно начать первичную настройку DHCP. Переходим по ссылке «Complete DHCP configuration»:
Процесс первичной настройки проходит в два этапа:
1. Создание «Группы безопасности» для управления этим DHCP—сервером. Всего их две:
2. Авторизация DHCP-сервера в Active Directory (если он присоединен к домену). Данная настройка нужна, чтобы избежать появления в сети посторонних DHCP-серверов. Сервер должен пройти авторизацию чтобы служба DHCP запустилась:
- Вписываем учетные данные администратора и жмем кнопку «Commit». Если сервер не присоединен к домену, то выбираем последний пункт:
- Если всё сделано верно, мастер оповещает об успешном выполнении настройки:
Работаем на ос семейства linux
Используем следующий формат команд:
scp [модификатор] [источник] [место_назначения]
Если в качестве источника или места назначения указывается удаленный сервер, то формат параметра такой:
[пользователь]@[сервер]:[путь_к_файлу]
После запуска команды потребуется ввести пароль от указанной учетной записи удаленного сервера.
За одну операцию можно скопировать несколько файлов, для этого необходимо указать их в качестве источника, разделив пробелом – местом назначения будет считаться последний указанный параметр. Например, загрузить файлы file1.tgz и file2.tgz из локального каталога на удаленный сервер позволит команда:
scp file1.tgz file2.tgz root@123.123.123.123:/root
Чтобы узнать какие еще модификаторы поддерживает команда, можно просто запустить scp без параметров и прочитать краткую справку.
Работаем на ос семейства windows
Если мы подключаемся к удаленному серверу с компьютера, работающего на операционной системе Windows, то нам снова потребуется обратиться к терминальному клиенту Putty, в состав которого входит исполняемый файл plink.exe. Работать с этим файлом необходимо из командной строки (cmd.exe) или из PowerShell.
Для запуска команды на удаленном сервере используется следующий синтаксис:
plink.exe [сервер] -ssh -l [пользователь] “[команда]”
Проверим конфигурацию сетевых интерфейсов:
plink.exe 123.123.123.123 -ssh -l root “ifconfig”
Как и при работе с командой SSH в Linux, plink.exe позволяет использовать “;” в качестве разделителя для запуска нескольких команд:
plink.exe 123.123.123.123 -ssh -l root “ifconfig; netstat -anp tcp”
А запуск команд из локального файла можно реализовать с помощью дополнительного ключа —m:
plink.exe 123.123.123.123 -ssh -l root -m “C:Tempmyscript.sh”
Запустив команду plink.exe без параметров, можно ознакомиться с краткой справкой по синтаксису и списком дополнительных модификаторов команды.
Создание a-записи
Данный раздел инструкции в большей степени предназначен для проверки ранее проделанных шагов.
Ресурсная запись — единица хранения и передачи информации в DNS, заключает в себе сведения о соответствии какого-либо имени с определёнными служебными данными.
Запись A — запись, позволяющая по доменному имени узнать IP-адрес.
Запись PTR — запись, обратная A записи.
- В Диспетчере DNS выберите каталог созданной ранее зоны внутри каталога Зон Прямого Просмотра. В правой части Диспетчера, где отображается содержимое каталогов, правой кнопки мыши вызовите выпадающее меню и запустите команду «Создать узел (A или AAAA)…»:
- Откроется окно создания Нового Узла, где понадобится вписать в соответствующие поля имя узла (без доменной части, в качестве доменной части используется название настраиваемой зоны) и IP-адрес. Здесь же имеется чек-бокс Создать соответствующую PTR-запись — чтобы проверить работу обеих зон (прямой и обратной), чек-бокс должен быть активирован:
Если поле имени остается пустым, указанный адрес будет связан с именем доменной зоны.
- Также можно добавить записи для других серверов:
- Добавив все необходимые узлы, нажмите Готово.
Создание зон прямого и обратного просмотра
Доменная зона — совокупность доменных имён в пределах конкретного домена.
Зоны прямого просмотра предназначены для сопоставления доменного имени с IP-адресом.
Зоны обратного просмотра работают в противоположную сторону и сопоставляют IP-адрес с доменным именем.
Создание зон и управление ими осуществляется при помощи Диспетчера DNS.
Перейти к нему можно в правой части верхней навигационной панели, выбрав меню Средства и в выпадающем списке пункт DNS:
Создание зоны обратного просмотра
- Выделите в Диспетчере DNS каталог Зоны Обратного Просмотра и нажатием кнопки Новая зона на панели инструментов сверху запустите Мастер Создания Новой Зоны:
- Выберите тип Основная Зона, перейдите Далее:
- Выберите назначение для адресов IPv4, нажмите Далее:
- Укажите идентификатор сети (первые три октета сетевого адреса) и следуйте Далее:
- При необходимости поменяйте название будущего файла зоны и перейдите Далее:
- Выберите, разрешить динамические обновления или нет. Разрешать не рекомендуется в силу значимой уязвимости. Перейдите Далее:
- Проверьте правильность выбранной конфигурации и завершите настройку, нажав кнопку Готово:
Создание зоны прямого просмотра
- Выделите каталог Зоны Прямого Просмотра, запустите Мастер Создания Новой Зоны с помощью кнопки Новая зона на панели инструментов сверху:
- Откроется окно Мастера с приветствием, нажмите Далее:
- Из предложенных вариантов выберите Основная зона и перейдите Далее:
- Укажите имя зоны и нажмите Далее:
- При необходимости поменяйте название будущего файла зоны и перейдите Далее:
- Выберите, разрешить динамические обновления или нет. Разрешать не рекомендуется в силу значимой уязвимости. Перейдите Далее:
- Проверьте правильность выбранной конфигурации и завершите настройку, нажав кнопку Готово:
Установка openssh в windows server 2021
Открываем Settings — Apps & features — Manage optional features:
Нажимаем Add a feature, ищем OpenSSH Server — Install:
На предыдущем экране дожидаемся окончания процесса инсталляции. OpenSSH сервер можем считать установленным.
Обращаем внимание, что установка этим методом автоматически создаст правило Windows Firewall, с названием «OpenSSH-Server-In-TCP», открывающее 22 порт для входящих подключений.
Используя PowerShell:
Проверим, присутствует ли на нашей системе встроенный OpenSSH:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
В ответ должны получить:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent #или Install, если клиент уже установлен
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Устанавливаем клиент, если он не установлен:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Для установки сервера вводим:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
В обоих случаях вывод должен быть следующим:
Path :
Online : True
RestartNeeded : False
Установка роли dns-сервера
Для установки дополнительных ролей на сервер используется Мастер Добавления Ролей и Компонентов, который можно найти в Диспетчере Сервера.
На верхней навигационной панели Диспетчера сервера справа откройте меню Управление, выберите опцию Добавить Роли и Компоненты:
Откроется окно Мастера, в котором рекомендуют убедиться что:
1. Учётная запись администратора защищена надёжным паролем.
2. Настроены сетевые параметры, такие как статические IP-адреса.
3. Установлены новейшие обновления безопасности из центра обновления Windows.
Убедившись, что все условия выполнены, нажимайте Далее;
Выберите Установку ролей и компонентов и нажмите Далее:
Выберите необходимый сервер из пула серверов и нажмите Далее:
Отметьте чек-боксом роль DNS-сервер и перейдите Далее:
Проверьте список компонентов для установки, подтвердите нажатием кнопки Добавить компоненты:
Оставьте список компонентов без изменений, нажмите Далее:
Прочитайте информацию и нажмите Далее:
В последний раз проверьте конфигурацию установки и подтвердите решение нажатием кнопки Установить:
Финальное окно Мастера сообщит, что установка прошла успешно, Мастер установки можно закрыть:
Шаг 1. настройка сетевого адаптера
Устанавливаем loopback-адаптер в системе. Мы будем обращаться по адресу к локальному адаптеру.
hdwwiz.exe
Запустится «Мастер установки оборудования» (Здесь я пользуюсь русской Windows 10 Pro).
«Далее» -> «Установка оборудования, выбранного из списка вручную» -> «Сетевые адаптеры» -> «Microsoft –> Адаптер замыкания на себя Microsoft KM-Test» -> «Далее»
Уверен, что эти шаги можно сделать из командной строки, но не нашел способ установки драйвера без devcon.exe, потому и не стал заморачиваться с автоматизацией этого шага.
Далее уже в CMD (от имени Администратора).
netsh interface show interface
Видим появился второй адаптер. У меня он называется Ethernet 2.
Теперь настроим адрес для этого адаптера
Или из командной строки:
netsh interface ip set address name="Ethernet 2" source=static address=10.255.255.1 mask=255.255.255.0
В результате у нас появился адаптер локально доступный по адресу 10.255.255.1
Теперь проблема в том, что нам необходимо получить доступ к общей папке через TCP-порт 445, но при загрузке Windows этот порт захватывается системным драйвером lanmanserver для всех интерфейсов. Отложив запуск драйвера lanmanserver и установив правило portproxy, мы можем обойти это.
Далее в командной строке от имени администратора меняем режим запуска сетевых служб (пробел после «start=» обязателен!!!):
sc config lanmanserver start= demand
sc config iphlpsvc start= auto
и настраиваем для адаптера с адресом 10.255.255.1 проксирование порта 44445 на локальный порт 445
netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 connectaddress=10.255.255.1 connectport=44445
Теперь необходимо перезагрузиться, чтобы схема перехвата порта у службы lanmanserver сработала.
Проверяем что прослушивание порта осуществляется нашим loopback-адаптером, просмотрев открытые в системе порты
netstat -an | find ":445 "
Если мы видим
TCP 10.255.255.1:445 0.0.0.0:0 LISTENING
значит все в порядке и порт прослушивается на нужном адресе. Если же мы видим “0.0.0.0:445” — значит в нашей схеме что-то не сработало правильно. Проверить правила переадресации портов можно командой
netsh interface portproxy show v4tov4
Шаг 2. ключ и рабочий скрипт
Создаем папку для вспомогательных файлов. Встроим, так сказать в систему наш способ.
mkdir %APPDATA%CIFSoverSSH
cd %APPDATA%CIFSoverSSH
Генерируем ключ для ssh-авторизации (назовем его, например: cifsoversshkey)
ssh-keygen -t rsa -N "" -f cifsoversshkey
В результате будет сгенерирована пара открытого и закрытого ключа. Для того, чтобы OpenSSH не выдавал сообщение UNPROTECTED PRIVATE KEY FILE! нужно изменить права на файл ключа. Задачу мы будем запускать для одного пользователя, от имени которого мы собираемся работать в Windows. Можно через GUI, но мне показалось что картинок уже достаточно. В Windows это сделаем следующей командой:
icacls cifsoversshkey /RESET
icacls cifsoversshkey /grant Имя_Пользователя:F /inheritance:r
В результате текущий пользователь будет назначен владельцем, отключено наследование и удалены унаследованные права. Проверить мы это сможем командой
icacls cifsoversshkey
Должны быть права только для текущего пользователя, иначе файл ключа не будет принят программой OpenSSH и соединение не будет подниматься!
Создадим в текущей папке пакетный файл cifsoverssh.cmd следующего содержания:
Шаг 3. ярлык или задача в планировщике
Создаем ярлык для следующей команды: powershell -nologo -noninteractive -windowStyle hidden -command “%APPDATA%CIFSoverSSHcifsoversshkey.cmd”Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.
Для автоматизации запуска при входе в систему можно создать задачу в планировщике:
I’m a blind student currently in a system admin/shell programming class. Although ssh works fine for executing commands like ls, pwd, etc editors do not work well with my screen reader and an ssh session. I was wondering if it is possible to mount a Linux folder over ssh so it appears as a windows drive? This way I could edit any files I needed to with accessible software and not have to constantly use SCP to send files back and fourth.
Michael Haren
104k40 gold badges165 silver badges205 bronze badges
asked Jan 14, 2009 at 16:45
3
Back in 2002, Novell developed some software called NetDrive that can map a WebDAV, FTP, SFTP, etc. share to a windows drive letter. It is now abandonware, so it’s no longer maintained (and not available on the Novell website), but it’s free to use. I found quite a few available to download by searching for «netdrive.exe» I actually downloaded a few and compared their md5sums to make sure that I was getting a common (and hopefully safe) version.
Update 10 Nov 2017
SFTPNetDrive is the current project from the original netdrive project. And they made it free for personal use:
We Made SFTP Net Drive FREE for Personal Use
They have paid options as well on the website.
flawr
10.2k3 gold badges41 silver badges63 bronze badges
answered Jan 14, 2009 at 16:56
Sunny MilenovSunny Milenov
21.8k6 gold badges79 silver badges106 bronze badges
5
Dokan looks like a FUSE and sshfs implementation for Windows. If it works as expected and advertised, it would do exactly what you are looking for.
(Link updated and working 2015-10-15)
answered Jan 14, 2009 at 16:59
matlimatli
27.6k6 gold badges36 silver badges37 bronze badges
13
Take a look at CIFS (http://www.samba.org/cifs/). It is a virtual file system you can run on your linux machine that will allow you to mount folders on your linux machine in windows using SMB.
CIFS on linux information can be found here: http://linux-cifs.samba.org/
answered Jan 14, 2009 at 17:03
neeshneesh
5,0676 gold badges29 silver badges32 bronze badges
2
You need to mount a remote share on your windows machine. This is what Samba/smb is for.
What you’ll be doing is turning your Linux box into an SMB server, which lets it share files in a way that plays nice with Windows.
If you’re not on the same network, you’ll need to tunnel this through your SSH connection which may not be worth the effort.
answered Jan 14, 2009 at 16:48
Michael HarenMichael Haren
104k40 gold badges165 silver badges205 bronze badges
3
I don’t think you can mount a Linux folder as a network drive under windows having only access to ssh. I can suggest you to use WinSCP that allows you to transfer file through ssh and it’s free.
EDIT: well, sorry. Vinko posted before me and now i’ve learned a new thing
answered Jan 14, 2009 at 16:54
Stefano DriussiStefano Driussi
2,2411 gold badge14 silver badges19 bronze badges
Apparently the free NetDrive software from Novell can access SFTP file servers.
answered Jan 14, 2009 at 17:03
AlnitakAlnitak
331k70 gold badges404 silver badges490 bronze badges
Second David’s answer below: I needed to mount a network drive automatically when users logged in. Dokan SSHFS is a nice tool, but wasn’t reliable enough in this case. The copy of Netdrive I found didn’t support SSHFS or sftp — not sure if a more recent one does.
The solution I’m trialling now involves adding a virtual network adapter (with file sharing disabled), using plink to open a tunnel via the new adapter to the remote machine running SAMBA, and mounting the network drive against the new adapter. There’s another useful tutorial here http://www.blisstonia.com/eolson/notes/smboverssh.php.
The tunnel and network drive can be set up with a login script, so a few seconds after login users can use the mapped drive without needing to take any action.
answered Oct 19, 2010 at 7:59
LeoLeo
1,47916 silver badges15 bronze badges
Сегодня расскажу как смонтировать папку (например, с сайтами) из Debian в Windows 10 по SSH (SFTP) с удобным включением/выключением. Под нужным пользователем (www-data) с нужными правами.
Ниже длинное вступление о том как и зачем мне это нужно. Его можно промотать.
Те кто читал мои посты в блоге и видел видосики на канале знают что в основном я занимаюсь разработкой своих сайтов на WordPress, Yii, Laravel. Основной инструмент — PhpStorm. Боевые проекты хостятся на разных вдсках в основном это FastVPS и RuWEB. Везде Debian + Nginx и везде более менее стандартный конфиг (с поправкой на версии и нагрузку кажого из проектов). Всего порядка десяка вдсок.
Разработка и бэкапы на локальной машине под Windows 10, где крутится усредненный аналог боевой конфиги в VirtualBox. Т.е. дев сервер сейчас это Debian 10 + Nginx 1.15.
Разработка и деплой на rsync
Со всех вдсок sh скрипт с помощью
ssh + rsync + mysqldump собирает текущие версии проектов и в итоге на дев инстансте всегда актуальные данные любого из проектов. На деве ведется разработка, тестирование, минификация, обфускация и т.д.После чего тем же скриптом изменения деплоятся на прод, на конкретную вдску. Git используется только на деве.
Я знаю про Docker
Эта схема не тренд, а мой личный велосипед. Логичнее было все это хозяйство контейнезировать и деплоить через гит. Однако некоторые проекты контейнезировать без потерь крайне сложно, а городить разные инфраструктуры при работе в одни руки не эффективно. Мой велосипед вполне успешно работает уже много лет, но есть одна проблема, над которой я бьюсь столько же лет сколько велосипед существует.
Проблема на самом деле в PhpStorm
В PhpStorm когда вы создаете проект из ранее созданных файлов ( Create New Project from Existing Files ) у вас есть по сути два выбора — файлы проекта расположены локально или удаленно. Если создать проект из удаленных файлов, то PhpStorm будет скачивать их все на локальный диск для индексации. А при изменении закачивать их обратно на удаленный сервер (например по SFTP). Это не проблема, когда разработка идет на одном компьютере.
Разработка на разных компах, в разных сетях
Однако я работаю сразу на 3х — стационарный десктоп под Windows 10, два ноутбука. Один ноут используется дома (нравится мне менять места и позы во время работы), второй используется реже — вне дома. И в этом случае возникает сложность синхронизации локальных проектов одного и того же удаленного проекта. Особенно если это проекты с множеством мелких файлов. Например Laravel c Laravel Mix. Короче жуткая головная боль.
Монтирование папки из Debian все бы решило
Куда проще если бы можно было подмонтировать удаленную папку сайта и создавать проект в PhpStorm как с локальными файлами. В Ubuntu это делается элементарно, а вот под виндой все на порядок сложнее.
Вариант с Samba
В принципе дома у меня работала схема с Samba сервером на дев виртуалке под юзером www-data. Но если работать с дев сервером с улицы (через проброс портов через роутер) и если домашний ip динамический, то возникает несколько сложностей — нужно каждый раз менять ip, пробрасывать порт в роутере ещё и на самбу (лишняя уязвимость), перемонтировать диски. Короче хотелось так чтобы как в Ubuntu. И выход нашелся.
Монтирование папки из Linux (Debian) в Windows по SFTP
Для монтирования папки из Linux в Window 10 по SFTP я использую связку billziss-gh/winfsp + billziss-gh/sshfs-win . WinFSP — это порт https://github.com/libfuse/sshfs под винду. А sshfs — это как раз та сетевая файловая система что используется в Ubuntu для монтирования по SFTP. Как я и хотел.
Итак ставим сначала WinFSP, затем SSHFS-Win. Сразу после перезагрузки диски папки можно будет легко монтировать прямо из проводника Windows 10. См. картинку.
Монтирование папки через проводник в SSHFS-Win
Однако в моем случае это не решило проблему.
Нестандартные порты SSH при монтировании
При монтировании папки через проводник вы можете указать путь до папки на сервере, но не можете указать порт SSH, если ssh висит не на 22. Это можно сделать в командной строке
net use Z: sshfs[LOCUSER=]REMUSER@HOST[!PORT][PATH] |
Но тогда:
- проводник, а соотв. и PhpStorm не увидит примонтированный диск
- логин/пароль придется вводить каждый раз.
Есть ощущение что это все можно решить если глубоко погрязнуть в скрипты настройки SSHFS-Win, однако здесь есть и два GUI это SiriKali и SSHFS-Win-Manager .
SiriKali мне жутко не понравился, а вот SSHFS-Win-Manager прижился. Собственно его использование решает почти все проблемы для монтирования дисков из Linux в Windows 10 по SFTP. Я напишу о его настройке чуть ниже. Однако в моем случае просто монтирования было не достаточно.
SSHFS-Win проблемы с юзером и правами на новые папки и файлы
Я ведь все эту чехарду устроил ради разработки и мне нужно чтобы работа на подмонтированном диске была из под юзера
www—data юзер www-data по умолчанию не имеет доступа к консоли и под ним нельзя примонтировать диск. Также SSHFS-Win создает НОВЫЕ папки и файлы с правами 0700 (для уже созданных не меняет), а мне надо чтобы было 0755 на папки и 0644 на файлы.
Разрешаю монтирование под www-data
Это самое сомнительное решение. Во всей этой схеме. Однако для виртуалки за роутером я решил что сойдет.
sudo passwd www—data # задаем пароль для www-data |
И в файле
/etc/passwd правлю строку:
www—data:x:33:33:www—data:/home:/bin/bash |
Обрати внимание что я сменил и папку юзера на ту, которую буду монтировать. Перезагружаю виртуалку и все — под www-data можно логиниться и монтировать диски.
Права на вновь создаваемые папки и файлы под SSHFS-Win
Для задания нужных прав у WinFSP есть опции
create_file_umask и
create_dir_umask . Их можно использовать в командной строке, однако проще в SSHFS-Win-Manager . Смотри картинки ниже.
Настройки SSHFS-Win-Manager
Здесь я создал два диска с одной буквой. Все эти маунты ведут на одну и туже виртуалку VirtualBox. Но один на внутренний IP, а второй через внешний динамический IP (через роутер с проброшенными портами на 80, 443 и ssh). Т.е. дома я монтирую верхний вариант и проброс в роутере могу вообще закрыть. А если работаю вне дома, то монтирую нижний. При этом для PhpStorm это всегда один и тотже локальный диск V. Невероятно удобно.
На этой картинки расширенные настройки, которые позволяют выставить нужные мне права (0755 / 0644). Если тебе нужны другие права гугли “permission umask ”.
На данный момент схема хорошо работает. На 4G Laravel проект под PhpStorm индексируется на 20-30 секунд, что более чем приемлемо. Если есть что дополнить или вопросы — пиши комменты (могут отлетать в премодерацию — это норма, я одобрю и отвечу). Также я есть в Телеграм.
There are various tools available to copy files and directories between Linux server. In this article we will use SSHFS to transfer files over SSH from local to remote and remote to local server.
You can also use below tools to copy files between Linux servers:
- RSYNC — my personal favorite
- SCP
- NFS
- HTTPS
- SFTP
- Samba
Overview on SSHFS
- SSHFS (Secure SHell FileSystem) is a file system for Linux (and other operating systems with a FUSE implementation, such as Mac OS X or FreeBSD) capable of operating on files on a remote computer using just a secure shell login on the remote computer.
- The sshfs command is a client tool for using SSHFS to mount a remote file system from another server locally on your machine.
- SSHFS allows you to mount a remote directory from remote server on your local machine using a mount point, and have it treated just like any other directory.
ALSO READ: 4 ways to SSH & SCP via proxy (jump) server in Linux
Advantage of using SSHFS
- Compared to other shared filesystem such as NFS and Samba we do not need any server or client side configuration
- SSHFS is a simple client tool which does not requires any additional configuration
- You can also use SSHFS to transfer files over SSH between Linux and Windows Server
- The files are transferred in completely encrypted channel so it is very secure
Drawbacks of using SSHFS
- You mount the remote directory on local server similar as NFS server but with transfer over SSH using SSHFS both encryption and decryption is involved which can cause performance impacts
- You should also save your data on the mount point as if there is a network connection problem then you may loose your data
Transfer File over SSH between two Linux servers
Install SSHFS on Linux
SSHFS is an opensource project and is not available in most default repositories of distributions
To install SSHFS on RHEL/CentOS 7, we must first install EPEL repository
# yum -y install epel-release
HINT:
At the time of writing this article, SSHFS was not available for RHEL/CentOS 8
Next install sshfs
on your client node
[root@server1 ~]# yum -y install sshfs
To install sshfs
on Ubuntu and Debian
$ sudo apt install sshfs
ALSO READ: SOLVED: SSH fails with postponed publickey error
Mount Remote File System
To transfer files over SSH using SSHFS, we must execute SSHFS using below syntax:
sshfs [user@]host:[dir] mountpoint [options]
Check sshfs -h
to get the complete list of supported options
In this example I have installed SSHFS on server1
and we will mount
Remote directory (/shared
) from server2
[root@server2 ~]# ls -l /shared/ total 0 -rw-r--r-- 1 root root 0 May 17 19:21 file1 -rw-r--r-- 1 root root 0 May 17 19:21 file2 -rw-r--r-- 1 root root 0 May 17 19:21 file3
to my local Linux node on server1
at (/mount_point
)
[root@server1 ~]# ls -l /mount_point/ total 0
So we must execute sshfs
on server1
, we are using root user to transfer files over SSH. You can use any normal user, but make sure this user has enough permission to access the remote directory on server2
[root@server1 ~]# sshfs root@192.168.43.10:/shared /mount_point root@192.168.43.10's password:
There was no error reported so the mount was successful. Verify the mount point on server1
[root@server1 ~]# mount | grep shared
root@192.168.43.10:/shared on /mount_point type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
You can now access the content of remote directory (/shared
) from server2
on /mount_point
directory on local Linux node at server1
[root@server1 ~]# ls -l /mount_point/ total 0 -rw-r--r--. 1 root root 0 May 17 19:21 file1 -rw-r--r--. 1 root root 0 May 17 19:21 file2 -rw-r--r--. 1 root root 0 May 17 19:21 file3
Now we can add and modify content under /mount_point
at server1
and the changes will be reflected runtime on server2
at /shared
Snippet from my terminal
ALSO READ: How to perform tar incremental backup with example in Linux
To permanently mount this remote directory use /etc/fstab
using below syntax:
user@host:/remote/path /local/mount_point fuse.sshfs defaults 0 0
In this example we will add below content in our /etc/fstab
root@192.168.43.10:/shared /mount_point fuse.sshfs defaults 0 0
Un-mount Remote File System
Once you have transferred your files, you can also un-mount the remote file system using umount
. Execute umount
on server1
:
[root@server1 ~]# umount /mount_point/
Verify and make sure there are no mount paths using /shared directory from remote server i.e. server2
[root@server1 ~]# mount | grep shared
Transfer File over SSH between Windows and Linux servers
- You can also use SSHFS to transfer files over SSH between Windows and Linux server.
- This can also be achieved using Samba but let us concentrate on SSHFS for the sake of this article
Install SSHFS on Windows
- To transfer files over SSH between Windows and Linux, you must install SSHFS on the WIndows server.
- You can get the files required to installed from the official Github page
- Download
WinFsp
and follow the onscreen instructions to install WinFsp on your Windows server
DownloadSSHFS-Win
and follow the onscreen instructions to install SSHFS-Win on your Windows server - At the time of writing this article I have installed
winfsp-1.6.20027.msi
andsshfs-win-3.5.20024-x64.msi
ALSO READ: Downgrade Ubuntu to previous version? [100% Working]
Mount Remote File System
Once you have installed WinFsp
and SSHFS-Win
on your windows server, next we must map the network location from remote server to a local mount point
I am using WIndows 10 so I will share the instructions based on my environment.
In Windows Explorer select This PC
⇒ Map Network Drive
Provide the path of your remote server and remote directory using the below syntax
\sshfsREMUSER@HOST[PATH]
NOTE:
Here we cannot directly give our mount point as /shared from our remote Linux server. We must use (/) to navigate around the Linux server. In this example we will connect to the home folder of our root user using
\sshfsroot@192.168.43.10
Provide the login credentials for root
user from the remote server i.e. server2
If all is good, you will be connected to your remote Linux server using Windows server. You can verify the path in the Navigation Pane. By default we are connected to home folder of root
user
How to connect to different folder using SSHFS in Windows?
In Windows SSHFS we are by default connected to user’s home directory so we must provide the absolute path using navigation symbols i.e. to go to /shared
directory our path to transfer files over SSH on Windows would be //sshfs/root@192.168.43.10/../shared
If you NOTICE, I have first changed my current directory using ../
followed by the path of /shared
directory. I hope you understand the point.
ALSO READ: Add timestamp to SSHD DEBUG logs [100% Working]
Now we are connected to /shared
directory where we had created three dummy files on server2
For list of Advanced Usage with Windows SSHFS, check the official Github page for instructions
Disconnect Remote File System
Once you are done, to disconnect the network drive, in Windows Explorer
select This PC
. Look out for your mapped drive and Right Click
on the drive to get a list of options. Select Disconnect
to remove the mapped drive from your Windows server.
Conclusion
Lastly I hope the steps from the article to configure NIC teaming on Linux was helpful. In this tutorial we learned about SSHFS and how we can use SSHFS to transfer files over SSH between two Linux servers or between Linux and Windows server. So, let me know your suggestions and feedback using the comment section.
References
I have used below external references for this tutorial guide
man page for sshfs
Windows SSHFS Github page