So tell me. Do you think #curl should support plain SSH:// URLs to execute commands remotely?
@bagder no. at the moment I expect curl to fetch and put things, not execute things.
also..
Assisted-by: an actual person <human@skunkwerks.at>
@bagder Seems out of scope to me, but it's your project and I'd have already made a different decision with regards to AI-generated submissions.
@bagder It would be fair only if local execution `curl --exec example.com/install` would be supported as well.
@bagder heck no. security smell & pinata for hackers. curl attracts enough scrutiny by bad actors as it is
@bagder speaking of which, I'd love to see grpc:// :)
@bagder no, because I am a strong proponent of the UNIX principle. Curl does one thing great, let ssh do that other job.
can I also remind you all that curl already speaks SCP and SFTP, in command line tool and library...
@bagder honestly I had no idea that it did this already. But I also wonder if it’s not growing beyond the “do one thing really well” philosophy. SSH and others in Curl feels very foreign to me.
@Tsluijter curl does internet transfers really well. It speaks 27 different protocols. It has supported SCP and SFTP for almost twenty years already...
@bagder adding 'ssh://' seems like it would introduce a fair amount of confusion. What features of an ssh client should curl itself implement? Does that implementation become some sort of ad hoc RPC protocol?
@bagder for me, that sounds like introducing a new kind of command line injection🫣
@bagder my impression is that the main scope of cURL is to fetch remote files (and push files to remotes that supports it).
From that point of view:
- support the SCP and SFTP protocols makes totally sense
- support remote execution of arbitrary command would fall under scope creep (and open too mant new cans of worms) (and also increase attack surface by giving opportunity for new creative abuse of the feature)
@bagder Hm, ssh can already to it: https://malcontentcomics.com/systemsboy/2006/07/send-remote-commands-via-ssh.html why mis-use curl then for this?
@bagder IMHO no; we have ssh already for that.
@bagder throw in a TUI and vim bindings while you're at it /s
and kids, don't forget that curl is even more a library than a command line tool...
But libcurl can’t support this except in builds where it links to libssh2. And this means that any program that might take advantage of this is also linked to libssh2. Which means that the real question is:
Is it easier for a program to encode something as a URL and a set of HTTP headers and pass it through libcurl’s APIs, or is it easier for it to pass those same values directly as arguments to libssh2 APIs?
I’ve never used libssh2, so I can’t say with 100% certainty, but I would be shocked if going via an API designed for a completely different kind of interaction is simpler.
The related question is whether there are use cases where you would want a program to either copy a file to / from a server or execute arbitrary code on that server via SSH, depending on user input. I can think of numerous reasons you would want to do that, but they’re all malware.
@bagder this could be practical in a similar way to KDE's fish protocol. One could use cat or dd in case the server side lacks support for SCP or SFTP.
But generally it's really up to what people enjoy doing with the tool. I can write scripts that use wget and ssh just the same, so in this case it would really be the library use case where curl would stand out. In some cases this might really help to interact with embedded devices as which run a version of Dropbear without SCP and SFTP support.
@bagder curl can do POST http requests so seems like a fine addition
@bagder And that feature request is trying to check out some chaos 📚
@bagder As fun as it would be, it's a bad idea imo 😬
@icing @catsalad @bagder clown activity aside, I'm really imagining this as being a fun feature for malicious actors to dodge environment restrictions rather than being used as a normally useful tool. Like it would be a neat party trick to execute commands. But that's what other tools are explicitly designed for, and they would probably be less awkward to use for normal use cases
@tehfishman @catsalad @bagder Yeah, the whole team feels this way. I believe Daniel want to give everyone the option to chime in with some positive aspect that we overlooked.
@icing @catsalad @bagder oh cool. The only positive I could imagine is in some kind of workflow where you would want the remote command to execute before or after the file download, to do something around managing the state of the file being downloaded. But like, that would be solved more cleanly by just writing a shell script to do that lol
@bagder No, don't do it. We've got ssh for that.