I have the following set up in my ~/.ssh/config
match host devbox
compression yes
user hari
port 22
hostname 192.168.9.7
match originalhost devbox exec "~/.ssh/check_if_outside_home.sh"
hostname devbox.harisund.com
The idea is this -
- Always connect to 192.168.8.15 (this will work if I am already at the home network)
- Connect instead to devbox.harisund.com , if I am not within the home LAN
However, with verbose logging, I see this -
1 OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g 1 Mar 2016
2 debug1: Reading configuration data /home/hsundararaja/.ssh/config
3 debug2: checking match for 'host devbox' host devbox originally devbox
4 debug3: /home/hsundararaja/.ssh/config line 734: matched 'host "devbox"'
5 debug2: match found
6 debug2: checking match for 'originalhost devbox exec "~/.ssh/check_if_outside_home.sh"' host 192.168.9.7 originally devbox
7 debug3: /home/hsundararaja/.ssh/config line 744: matched 'originalhost "devbox"'
8 debug1: Executing command: '~/.ssh/check_if_outside_home.sh'
9 debug1: permanently_drop_suid: 14741
10 debug3: command returned status 0
11 debug3: /home/hsundararaja/.ssh/config line 744: matched 'exec "~/.ssh/check_if_outside_home.sh"'
12 debug2: match found
13 debug1: /home/hsundararaja/.ssh/config line 839: Applying options for *
14 debug1: Reading configuration data /etc/ssh/ssh_config
15 debug1: /etc/ssh/ssh_config line 19: Applying options for *
16 debug2: resolving "192.168.9.7" port 22
17 debug2: ssh_connect_direct: needpriv 0
18 debug1: Connecting to 192.168.9.7 [192.168.9.7] port 22.
19 debug2: fd 3 setting O_NONBLOCK
20 debug1: connect to address 192.168.9.7 port 22: Connection timed out
21 ssh: connect to host 192.168.9.7 port 22: Connection timed out
In line 4, it detects the first stanza in ~/.ssh/config. At this point, hostname gets changed to 192.168.9.7. All good so far.
In line 7, it reaches the second stanza.
In line 8, it checks if we are outside home, and it returns 0. As expected.
Line 12 says it's a match, which means we should change our hostname to devbox.harisund.com
However, in line 16, we see it is still using the local hostname as it was set.
Why ? Is this expected behavior?