Slashdot Mirror


Getting the Most Out of SSH

jfruh writes "If you have to administer a *nix computer remotely, you hopefully ditched Telnet for SSH years ago. But you might not know that this tool does a lot more than offer you a secured command line. Here are some tips and tricks that'll help you do everything from detect man-in-the-middle attacks (how are you supposed to know if you should accept a new hosts public key, anyway?) to evading restrictions on Web surfing." What are your own favorite tricks for using SSH?

28 of 284 comments (clear)

  1. Hopefully? by Enry · · Score: 5, Insightful

    If you're still using telnet to administer anything that offers SSH, you should probably choose another field to work in.

    1. Re:Hopefully? by hcs_$reboot · · Score: 4, Interesting

      well I occasionally use 'telnet host 25' to test the smtp port

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    2. Re:Hopefully? by buchner.johannes · · Score: 4, Insightful

      Telnet has a protocol. Look at socat and netcat. Socat supports ssl, you can check your smtps server port.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    3. Re:Hopefully? by CubicleZombie · · Score: 5, Interesting

      I've worked in organizations where, because you can tunnel over SSH, it was banned and blocked over the network. Everything had to be done with Telnet instead. I'm not joking. That is probably what started my loathing of net admins.

      --
      :wq
    4. Re:Hopefully? by hcs_$reboot · · Score: 4, Insightful

      So, when I want to check if the port 25 is not blocked (firewall at ISP...) and is opened, instead of a simple 'telnet host 25' followed by ^D or ^C, I should write a C++ (may I use C for that, please?) program that does the same thing? You do know that some people already wrote some commands for that, right?

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    5. Re:Hopefully? by Galactic+Dominator · · Score: 5, Informative

      Telnet isn't, it only works "by accident" because the protocol is similar enough to plain text to work sometimes.

      Bullshit. It was designed that way. And I can prove it, unlike your assertion.

      http://tools.ietf.org/html/rfc15

      --
      brandelf -t FreeBSD /brain
    6. Re:Hopefully? by kwark · · Score: 4, Informative

      smtps was deprecated years ago (not that I agree). You should use:
      openssl s_client -starttls smtp -connect host:(25|587)
      Something socat doesn't appear to support (that's a first).

    7. Re:Hopefully? by sydneyfong · · Score: 5, Informative

      Emails are cached in a lot of intermediate servers and stuff. The logs are routinely backed up. Undelivered emails get forwarded to all sorts of addresses and admins. Even if nobody was maliciously scooping on you, the passwords could land on some random person's hands.

      It *is* more secure over the phone in that sense.

      And it's not a common practice to log down telnet traffic. Anyone who gets your telnet password is probably sniffing maliciously.

      Not to say it's a sane policy to use telnet, but there are these differences in "levels" of safety (both levels are of course very very low). To a security conscious person it may be equivalent, but practically you have less chance a random John Doe will get your password this way. Maybe it matters, don't ask me....

      --
      Don't quote me on this.
  2. How's that again? by 93+Escort+Wagon · · Score: 4, Informative

    (how are you supposed to know if you should accept a new hosts public key, anyway?)

    Seriously? If you don't know enough about what's going on with the machine at the other end to make that decision... that's the whole bloody point of the warning!

    --
    #DeleteChrome
  3. Wow by frodo+from+middle+ea · · Score: 5, Interesting
    Wow, ssh tunneling, and a few command line options , and screen, that's your ultimate SSH guide ?
    I am impressed, not!

    How about
    - ssh master connection, for svn+ssh ?
    - ssh agent forwarding
    - opening ssh ports using knocking
    - auto blacklisting with something like sshblack

    I think the above are more advanced options than the ones mentioned in the article, no ?

    --
    for the last time people, I am "frodo from middle eaRTH", not "middle eaST".
  4. Really lame by Anrego · · Score: 4, Informative

    Tip 16 and friends (the keyart stuff) is very poorly explained. You don’t know that the key is secure, but you magically know that the randomart is? That’s the bit they forgot to mention. It’s a visual representation of the key that _you have to have seen before to be able to verify_. Personally if you are going to go to the trouble.. I say throw the key on a USB stick and be done with it.

    The screen stuff maybe worth mentioning the more modern alternative tmux.

    SSHFS is better than NFS

    For quick one-off stuff .. maybe. Cryptographic overhead is still startlingly effective at slowing things down, even on fast hardware (random: can anyone explain why.. you’d think it shouldn’t make any difference at this point.. I’m guessing it has something to do with network framing?).

    Tip 4 (logging in with server-specific keys ) seems like the kind of thing that very few people will ever need to do.. and if they do.. they’ll google it. Kinda silly putting it in an article like this.

    Tip 2 (ssh tunnel) is probably the only thing in here that _might_ be considered an “ultimate” hack (everything else is pretty much Linux 101).

    Tip 1 (Evading silly web restrictions) is great. Alternate title: “my job is important, but damnit I need my facebook/twitter fix”.

    1. Re:Really lame by Anonymous Coward · · Score: 5, Informative

      I am the developper of libssh (www.libssh.org).
      SSHFS is slow because it's a packet based TCP-encapsulated file transfer protocol. All requests are initiated by the client and somewhat replied to by the server in an asynchronous design, but in practice no sftp server really has an asynchronous implementation. Opening a file, querying its length and downloading 8KiB require at least 3 or 4 RTT.
      Compare with NFS, UDP based and mostly kernel-land and fully asynchronous.
      Crypto is the main overhead in libssh and I suspect in openssh too, mainly because the crypto libs used do not probe for AES extensions or accelerators by default. And last but not least, OpenSSH's Channel window handling (similar to TCP windows) is not optimal for bulk transfers at high speed.
      There are also some remote filesystem features missing in SFTP, like server-send feedback, locks and friends.

  5. Re:InfoWorld at it again by buchner.johannes · · Score: 5, Interesting

    My favorite trick is
    1) have a server on the internet, let someone ssh -R their port 22 there
    2) connect to that server too with ssh -L putting their port 22 on the local port 8022
    3) Now you have a peer-to-peer ssh (with -Y), and you can run graphical applications remotely.

    --
    NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
  6. My fav by Anonymous Coward · · Score: 4, Interesting

    Rather than more complaining, I thought I'd say my favorite option. I like using the ~/.ssh/config file and the use of a master connection. In mine, I have:

    host *
      controlmaster auth
      controlpath ~/.ssh/ssh-%r@%h:%p
      controlpersist yes

    This creates a master socket on my client. When I first connect, I need to use my passphrase. But when I exit, the SSH tunnel stays up. Futher connections via SSH and sftp and scp use this connection, multiplexed. So no more asking from my passphrase. When I'm finished for the day, I close down the connection with

    ssh -O exit host

    replacing "host"

  7. Re:InfoWorld at it again by tangent3 · · Score: 4, Informative

    That's what nohup is for

  8. Re:InfoWorld at it again by GameboyRMH · · Score: 5, Informative

    Yep I shoulda looked before I clicked...nothing non-obvious here folks, move along.

    Here's an actual handy tip: You can make your RSA keyfiles also act as shellscripts for the connection, so you only need to carry 1 file to open the connection from any *nix machine.

    To do it, just prefix your keyfile (say it's called ssh_my_server) like this:

    #! /bin/sh
    ssh user@hostname -i ssh_my_server
    exit

    ----------BEGIN RSA PRIVATE KEY--------
    (key goes here, use 4096-bit key for extra l33tness)

    Make the file executable and now you can open the connection just by cd'ing to it and running it.

    --
    "When information is power, privacy is freedom" - Jah-Wren Ryel
  9. Comment removed by account_deleted · · Score: 5, Informative

    Comment removed based on user account deletion

  10. Re:InfoWorld at it again by syzler · · Score: 4, Informative

    I generally prefer the apps on my desktop rather than the remote apps. "ssh -D 8080 " will start a SOCKS4/SOCKS5 server running on your local port 8080 and proxy the connections out the remote side. This allows all of your SOCKS enabled applications on your local workstation to make use of the tunnel without having to setup a one to one port mapping.

  11. Re:SSH Tunnel by Ruzty · · Score: 4, Insightful

    Traffic pattern matching over SSL. A web session over an SSL connection looks very different than an ssh tunnel session over SSL, not to mention the length of life of the socket. It's trivial to have the firewall identify the ssh connection over port 443 and disconnect it in the first few seconds of the session based purely on the pattern of the traffic regardless of content.

    --
    The Master (Angelo Rossitto) in Mad Max Beyond Thunderdome, "Not shit, energy!"
  12. Re:InfoWorld at it again by MasterMan · · Score: 5, Informative

    It does matter though. Didn't use screen? Lost a connection? Your processes are terminated. Linux sucks in that regard, you need to know about the hangup "feature" that immediately kills your processes when the terminal dies.

    Yes, but this isn't even explained in the article!

  13. Re:InfoWorld at it again by Albanach · · Score: 4, Insightful

    Hell, I knew about these things when I was 16 and so did every other guy I knew who ever had used SSH.

    To be fair, I'm sure there are sixteen year olds reading /.

    I don't expect every article to be useful to me. Not sure why you would expect that.

    I haven't read the article - I think I'm familar enough myself with ssh - but as long as the info is accurate, I'd image it's a useful tutorial for folk getting into Linux.

  14. Re:InfoWorld at it again by icebraining · · Score: 4, Informative

    Using sshuttle, the applications don't even need to support SOCKS; it proxies all traffic over SSH.

  15. Re:InfoWorld at it again by nschubach · · Score: 5, Interesting

    In my opinion, I think it might be a better idea to kill the errant job if the controller/user gets disconnected than to continue with a job that may need a followup command that may never come, possibly leaving the server in an unusable state. So you have a choice of trusting the user or having the user say explicitly, "trust me, this is what I want to happen (screen/nohup)... even if I get disconnected."

    --
    Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
  16. This Article's True Purpose by preaction · · Score: 5, Insightful

    Get real SSH tips from people complaining (rightly or not) that it doesn't contain any actual advice.

  17. Re:InfoWorld at it again by hcs_$reboot · · Score: 4, Informative

    To be honest I don't know, but these man pages show
    PermitRootLogin
    Specifies whether root can log in using ssh(1). The argument must be "yes", "without-password", "forced-commands-only" or "no". The default is "yes".

    --
    Slashdot, fix the reply notifications... You won't get away with it...
  18. Re:InfoWorld at it again by miknix · · Score: 5, Funny

    What about unlimited encrypted storage?

    you need TCP forwarding enabled in your sshd_config, then

    ssh -L localhost:2222:localhost:2222 localhost
    $ echo "data you wanna save" | nc localhost 2222

    # or if you want to backup your hdd, try:
    $ cat /dev/sda1 | nc localhost 2222

    # the data will be forwarded forever in the loopback link at no cost until you read it back:
    $ nc localhost 2222 > hdd-backup.bin

    # profit!

  19. Re:InfoWorld at it again by dylan_- · · Score: 4, Informative

    My mistake, then. I'd heard they'd gone the same route as OS X (incorrectly, it appears). Apologies to all.

    Nope, you heard correctly. The bit you're mistaken about is that OS X also has a root user. In both cases, the account is "locked" (no matchable password is set). Set a password for the root user and it works as normal.

    --
    Igor Presnyakov stole my hat
  20. Re:InfoWorld at it again by semi-extrinsic · · Score: 4, Informative
    Personal favourite: If you have machines on a LAN that are only exposed to that LAN, but there is one "gateway" machine that you can ssh to from the internet: use ProxyCommand, and you can ssh "directly" to the machines on the LAN even from the internet! Put the following in your .ssh/config:

    Host gate1
    Hostname 128.141.81.163
    User joe

    Host local12
    Hostname 192.168.1.12
    User joe
    ProxyCommand ssh -e none gate1 exec netcat -w 5 %h %p

    You can now ssh to "local12" just by typing "ssh local12", whether you are on the LAN or not.

    --
    for i in `facebook friends "=bday" 2>/dev/null | cut -d " " -f 3-`; do facebook wallpost $i "Happy birthday!"; done